{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import sys\n",
    "import seaborn as sns\n",
    "import warnings\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "from sklearn.metrics import mean_squared_error as MSE\n",
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn.metrics import mean_absolute_error #平方绝对误差\n",
    "from sklearn.metrics import r2_score#R square\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签\n",
    "plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_325 = pd.read_excel(\"3-数据清洗后325样本数据.xlsx\", na_values=np.nan)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(325, 203)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_325.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['样本编号', '时间', 'RON损失', '原料性质：硫含量', '原料性质：辛烷值', '原料性质：饱和烃', '原料性质：烯烃',\n",
       "       '原料性质：芳烃', '原料性质：溴值', '原料性质：密度', '产品性质：硫含量', '产品性质：辛烷值', '待生吸附剂性质：焦炭',\n",
       "       '待生吸附剂性质：S', '再生吸附剂性质：焦炭', '再生吸附剂性质：S', 'S-ZORB.CAL_H2.PV',\n",
       "       'S-ZORB.PDI_2102.PV', 'S-ZORB.PT_2801.PV', 'S-ZORB.FC_2801.PV',\n",
       "       'S-ZORB.TE_2103.PV', 'S-ZORB.TE_2005.PV', 'S-ZORB.PT_2101.PV',\n",
       "       'S-ZORB.PDT_2104.PV', 'S-ZORB.TE_2301.PV', 'S-ZORB.PT_2301.PV',\n",
       "       'S-ZORB.PC_2105.PV', 'S-ZORB.PC_5101.PV', 'S-ZORB.TC_5005.PV',\n",
       "       'S-ZORB.LC_5001.PV'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_325.columns[:30]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_325.drop(['样本编号', '时间', '产品性质：硫含量', '产品性质：辛烷值'], axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>RON损失</th>\n",
       "      <th>原料性质：硫含量</th>\n",
       "      <th>原料性质：辛烷值</th>\n",
       "      <th>原料性质：饱和烃</th>\n",
       "      <th>原料性质：烯烃</th>\n",
       "      <th>原料性质：芳烃</th>\n",
       "      <th>原料性质：溴值</th>\n",
       "      <th>原料性质：密度</th>\n",
       "      <th>待生吸附剂性质：焦炭</th>\n",
       "      <th>待生吸附剂性质：S</th>\n",
       "      <th>...</th>\n",
       "      <th>S-ZORB.AT-0011.DACA.PV</th>\n",
       "      <th>S-ZORB.FT_1204.DACA.PV</th>\n",
       "      <th>S-ZORB.LC_5102.PIDA.PV</th>\n",
       "      <th>S-ZORB.TE_1102.DACA.PV</th>\n",
       "      <th>S-ZORB.CAL.LINE.PV</th>\n",
       "      <th>S-ZORB.CAL.CANGLIANG.PV</th>\n",
       "      <th>S-ZORB.CAL.SPEED.PV</th>\n",
       "      <th>S-ZORB.FT_1503.TOTALIZERA.PV</th>\n",
       "      <th>S-ZORB.FT_1504.TOTALIZERA.PV</th>\n",
       "      <th>S-ZORB.PC_1001A.PV</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.38</td>\n",
       "      <td>188.0</td>\n",
       "      <td>90.6</td>\n",
       "      <td>53.230000</td>\n",
       "      <td>24.400000</td>\n",
       "      <td>22.370000</td>\n",
       "      <td>61.487143</td>\n",
       "      <td>726.085714</td>\n",
       "      <td>2.32</td>\n",
       "      <td>7.30</td>\n",
       "      <td>...</td>\n",
       "      <td>0.496243</td>\n",
       "      <td>18.292067</td>\n",
       "      <td>42.015425</td>\n",
       "      <td>425.929515</td>\n",
       "      <td>0.282564</td>\n",
       "      <td>37.804650</td>\n",
       "      <td>3.324945</td>\n",
       "      <td>39063124.5</td>\n",
       "      <td>39608757.0</td>\n",
       "      <td>0.353271</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.18</td>\n",
       "      <td>169.0</td>\n",
       "      <td>90.5</td>\n",
       "      <td>52.300000</td>\n",
       "      <td>26.400000</td>\n",
       "      <td>21.300000</td>\n",
       "      <td>61.880000</td>\n",
       "      <td>731.300000</td>\n",
       "      <td>2.37</td>\n",
       "      <td>7.34</td>\n",
       "      <td>...</td>\n",
       "      <td>0.491385</td>\n",
       "      <td>19.842605</td>\n",
       "      <td>40.903878</td>\n",
       "      <td>421.534365</td>\n",
       "      <td>0.281381</td>\n",
       "      <td>37.876006</td>\n",
       "      <td>3.321169</td>\n",
       "      <td>38810581.5</td>\n",
       "      <td>39389299.0</td>\n",
       "      <td>0.354504</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.38</td>\n",
       "      <td>177.0</td>\n",
       "      <td>90.7</td>\n",
       "      <td>52.300000</td>\n",
       "      <td>26.314286</td>\n",
       "      <td>21.385714</td>\n",
       "      <td>61.722857</td>\n",
       "      <td>729.614286</td>\n",
       "      <td>2.43</td>\n",
       "      <td>7.27</td>\n",
       "      <td>...</td>\n",
       "      <td>0.495483</td>\n",
       "      <td>26.994896</td>\n",
       "      <td>42.103142</td>\n",
       "      <td>425.258420</td>\n",
       "      <td>0.282277</td>\n",
       "      <td>37.907927</td>\n",
       "      <td>3.319569</td>\n",
       "      <td>38693812.0</td>\n",
       "      <td>39312616.5</td>\n",
       "      <td>0.350181</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.38</td>\n",
       "      <td>159.0</td>\n",
       "      <td>90.4</td>\n",
       "      <td>52.300000</td>\n",
       "      <td>26.100000</td>\n",
       "      <td>21.600000</td>\n",
       "      <td>61.330000</td>\n",
       "      <td>725.400000</td>\n",
       "      <td>3.08</td>\n",
       "      <td>7.35</td>\n",
       "      <td>...</td>\n",
       "      <td>0.490180</td>\n",
       "      <td>26.324458</td>\n",
       "      <td>41.970416</td>\n",
       "      <td>424.406195</td>\n",
       "      <td>0.282275</td>\n",
       "      <td>39.177396</td>\n",
       "      <td>3.210211</td>\n",
       "      <td>38410862.5</td>\n",
       "      <td>39120204.5</td>\n",
       "      <td>0.353930</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.28</td>\n",
       "      <td>173.0</td>\n",
       "      <td>89.6</td>\n",
       "      <td>52.242857</td>\n",
       "      <td>26.671429</td>\n",
       "      <td>21.085714</td>\n",
       "      <td>61.332857</td>\n",
       "      <td>725.428571</td>\n",
       "      <td>2.45</td>\n",
       "      <td>6.58</td>\n",
       "      <td>...</td>\n",
       "      <td>0.501194</td>\n",
       "      <td>30.224367</td>\n",
       "      <td>42.900094</td>\n",
       "      <td>428.514740</td>\n",
       "      <td>0.282963</td>\n",
       "      <td>39.508370</td>\n",
       "      <td>3.178832</td>\n",
       "      <td>38283000.0</td>\n",
       "      <td>39045953.5</td>\n",
       "      <td>0.358053</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 199 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   RON损失  原料性质：硫含量  原料性质：辛烷值   原料性质：饱和烃    原料性质：烯烃    原料性质：芳烃    原料性质：溴值  \\\n",
       "0   1.38     188.0      90.6  53.230000  24.400000  22.370000  61.487143   \n",
       "1   1.18     169.0      90.5  52.300000  26.400000  21.300000  61.880000   \n",
       "2   1.38     177.0      90.7  52.300000  26.314286  21.385714  61.722857   \n",
       "3   1.38     159.0      90.4  52.300000  26.100000  21.600000  61.330000   \n",
       "4   1.28     173.0      89.6  52.242857  26.671429  21.085714  61.332857   \n",
       "\n",
       "      原料性质：密度  待生吸附剂性质：焦炭  待生吸附剂性质：S  ...  S-ZORB.AT-0011.DACA.PV  \\\n",
       "0  726.085714        2.32       7.30  ...                0.496243   \n",
       "1  731.300000        2.37       7.34  ...                0.491385   \n",
       "2  729.614286        2.43       7.27  ...                0.495483   \n",
       "3  725.400000        3.08       7.35  ...                0.490180   \n",
       "4  725.428571        2.45       6.58  ...                0.501194   \n",
       "\n",
       "   S-ZORB.FT_1204.DACA.PV  S-ZORB.LC_5102.PIDA.PV  S-ZORB.TE_1102.DACA.PV  \\\n",
       "0               18.292067               42.015425              425.929515   \n",
       "1               19.842605               40.903878              421.534365   \n",
       "2               26.994896               42.103142              425.258420   \n",
       "3               26.324458               41.970416              424.406195   \n",
       "4               30.224367               42.900094              428.514740   \n",
       "\n",
       "   S-ZORB.CAL.LINE.PV  S-ZORB.CAL.CANGLIANG.PV  S-ZORB.CAL.SPEED.PV  \\\n",
       "0            0.282564                37.804650             3.324945   \n",
       "1            0.281381                37.876006             3.321169   \n",
       "2            0.282277                37.907927             3.319569   \n",
       "3            0.282275                39.177396             3.210211   \n",
       "4            0.282963                39.508370             3.178832   \n",
       "\n",
       "   S-ZORB.FT_1503.TOTALIZERA.PV  S-ZORB.FT_1504.TOTALIZERA.PV  \\\n",
       "0                    39063124.5                    39608757.0   \n",
       "1                    38810581.5                    39389299.0   \n",
       "2                    38693812.0                    39312616.5   \n",
       "3                    38410862.5                    39120204.5   \n",
       "4                    38283000.0                    39045953.5   \n",
       "\n",
       "   S-ZORB.PC_1001A.PV  \n",
       "0            0.353271  \n",
       "1            0.354504  \n",
       "2            0.350181  \n",
       "3            0.353930  \n",
       "4            0.358053  \n",
       "\n",
       "[5 rows x 199 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_325.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = data_325['RON损失']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = data_325[ data_325.columns[1:] ]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(325, 198)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.neighbors import KNeighborsRegressor\n",
    "from sklearn.svm import SVR\n",
    "from sklearn.linear_model import Lasso\n",
    "from sklearn.linear_model import Ridge\n",
    "from sklearn.neural_network import MLPRegressor\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "from sklearn.tree import ExtraTreeRegressor\n",
    "from xgboost import XGBRegressor\n",
    "from sklearn.ensemble import RandomForestRegressor\n",
    "from sklearn.ensemble import AdaBoostRegressor\n",
    "from sklearn.ensemble import GradientBoostingRegressor\n",
    "from sklearn.ensemble import BaggingRegressor\n",
    "models=[DecisionTreeRegressor(),RandomForestRegressor(),XGBRegressor(),AdaBoostRegressor(),GradientBoostingRegressor()]\n",
    "models_str=['DecisionTree', 'RandomForestRegressor','XGBoost','AdaBoost','GradientBoost']\n",
    "score_=[]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "#     print('开始训练模型：'+name)\n",
    "#     model=model   #建立模型\n",
    "#     model.fit(x_train,y_train)\n",
    "#     y_pred=model.predict(x_test)  \n",
    "#     score_model = model.score(x_test,y_test)\n",
    "#     print(name +' 得分:'+str(score_model))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "DecisionTree 最佳得分:-0.4238647006091145\n",
      "DecisionTree 最佳参数: {'max_depth': 8}\n",
      "RandomForestRegressor 最佳得分:0.03820116178531604\n",
      "RandomForestRegressor 最佳参数: {'max_depth': 5, 'n_estimators': 100}\n",
      "XGBoost 最佳得分:0.034331416058391184\n",
      "XGBoost 最佳参数: {'learning_rate': 0.1, 'max_depth': 5, 'min_child_weight': 6, 'n_estimators': 50}\n",
      "AdaBoost 最佳得分:0.09863331340554868\n",
      "AdaBoost 最佳参数: {'learning_rate': 0.1, 'n_estimators': 50}\n",
      "GradientBoost 最佳得分:-0.009613493649491852\n",
      "GradientBoost 最佳参数: {'learning_rate': 0.16, 'max_depth': 5, 'n_estimators': 200}\n"
     ]
    }
   ],
   "source": [
    "for name,model in zip(models_str,models):\n",
    "    if name == 'DecisionTree':\n",
    "        para_dict = {\n",
    "        'max_depth': [5,8,10,15,20]\n",
    "        }\n",
    "    elif name == 'XGBoost':\n",
    "        para_dict = {\n",
    "        \"max_depth\": [5,10,15],\n",
    "        \"min_child_weight\" : [1,3,6],\n",
    "        \"n_estimators\": [50,100,200],\n",
    "        \"learning_rate\": [0.05, 0.1]\n",
    "        }\n",
    "    elif name == 'RandomForestRegressor':\n",
    "        para_dict = {\n",
    "        \"max_depth\": [5,10,15],\n",
    "        \"n_estimators\": [50,100,200]\n",
    "        }\n",
    "    elif name == 'AdaBoost':\n",
    "        para_dict = {\n",
    "        \"n_estimators\": [50,100,200],\n",
    "        \"learning_rate\": [0.05, 0.1]\n",
    "        }\n",
    "    elif name == 'GradientBoost':\n",
    "        para_dict = {\n",
    "        \"max_depth\": [5,10,15],\n",
    "        \"n_estimators\": [50,100,200],\n",
    "        \"learning_rate\": [0.05, 0.1,0.16]\n",
    "        }\n",
    "    gcv = GridSearchCV(model, para_dict)\n",
    "    gcv.fit(x_train,y_train)\n",
    "    gcv_pre = gcv.predict(x_test)\n",
    "    gcv_score = gcv.score(x_test,y_test)\n",
    "    gcv_params = gcv.best_params_\n",
    "    \n",
    "    #model_fearture = model.feature_importances_\n",
    "    print(name +' 最佳得分:'+str(gcv.best_score_ ))\n",
    "    print(name + \" 最佳参数:\", gcv_params)\n",
    "    #print(model_fearture)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "DecisionTree 最佳得分:0.04238647006091145\n",
    "DecisionTree 最佳参数: {'max_depth': 8}\n",
    "RandomForestRegressor 最佳得分:0.6820116178531604\n",
    "RandomForestRegressor 最佳参数: {'max_depth': 5, 'n_estimators': 100}\n",
    "XGBoost 最佳得分:0.64331416058391184\n",
    "XGBoost 最佳参数: {'learning_rate': 0.1, 'max_depth': 5, 'min_child_weight': 6, 'n_estimators': 50}\n",
    "AdaBoost 最佳得分:0.6286333134055486\n",
    "AdaBoost 最佳参数: {'learning_rate': 0.1, 'n_estimators': 50}\n",
    "GradientBoost 最佳得分:0.009613493649491852\n",
    "GradientBoost 最佳参数: {'learning_rate': 0.16, 'max_depth': 5, 'n_estimators': 200}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# RandomForestRegressor "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.03980836138299636 0.19952032824500956 0.14934061826096606 0.08926292011697334\n"
     ]
    }
   ],
   "source": [
    "model_RFR = RandomForestRegressor(max_depth=5, n_estimators=100, random_state=666)\n",
    "model_RFR.fit(x_train, y_train)\n",
    "y_predict = model_RFR.predict(x_test)\n",
    "model_fearture = model_RFR.feature_importances_\n",
    "mse_score = MSE(y_test, y_predict)\n",
    "rmse_score = np.sqrt(mse_score)\n",
    "mae_score = mean_absolute_error(y_test, y_predict)\n",
    "rr_score = r2_score(y_test, y_predict)\n",
    "print(mse_score, rmse_score, mae_score, rr_score)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "feature_important_df = pd.DataFrame()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "feature_important_df[\"特征名称\"] = x_train.columns[:31]\n",
    "feature_important_df[\"重要指数\"] = model_fearture[:31]*10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>特征名称</th>\n",
       "      <th>重要指数</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>原料性质：硫含量</td>\n",
       "      <td>0.022559</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>原料性质：辛烷值</td>\n",
       "      <td>0.228053</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>原料性质：饱和烃</td>\n",
       "      <td>0.095599</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>原料性质：烯烃</td>\n",
       "      <td>0.088867</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>原料性质：芳烃</td>\n",
       "      <td>0.025490</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       特征名称      重要指数\n",
       "0  原料性质：硫含量  0.022559\n",
       "1  原料性质：辛烷值  0.228053\n",
       "2  原料性质：饱和烃  0.095599\n",
       "3   原料性质：烯烃  0.088867\n",
       "4   原料性质：芳烃  0.025490"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feature_important_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "feature_important_df = feature_important_df.sort_values(by=['重要指数'],axis = 0,ascending = False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "# feature_important = pd.Series(model_fearture[:31]*10, index = x_train.columns[:31]).sort_values(ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "# feature_important_df = pd.DataFrame(feature_important)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "# feature_important_df = feature_important_df.T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(15, 8))\n",
    "#sns.bar(feature_important.index, feature_important.data)\n",
    "plt.title(\"随机森林回归模型重要参数选择指数\")\n",
    "sns.barplot(x='特征名称',y='重要指数',color=\"salmon\",data=feature_important_df)\n",
    "plt.xticks(rotation=90)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [],
   "source": [
    "feature_important_df.to_excel(\"随机森林回归模型重要参数选择指数.xlsx\", index=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 极端梯度提升树（eXtreme Gradient Boosting）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.04219754448828328 0.20542040913279108 0.14997677540292523 0.03460310572068703\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>特征名称</th>\n",
       "      <th>重要指数</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>S-ZORB.CAL_H2.PV</td>\n",
       "      <td>0.167599</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>S-ZORB.TE_5202.PV</td>\n",
       "      <td>0.139669</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>S-ZORB.TE_2103.PV</td>\n",
       "      <td>0.126358</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>原料性质：溴值</td>\n",
       "      <td>0.124974</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>S-ZORB.TE_2301.PV</td>\n",
       "      <td>0.123052</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>原料性质：饱和烃</td>\n",
       "      <td>0.122578</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>原料性质：密度</td>\n",
       "      <td>0.093132</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>原料性质：烯烃</td>\n",
       "      <td>0.087576</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>原料性质：辛烷值</td>\n",
       "      <td>0.079469</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>S-ZORB.TE_5102.PV</td>\n",
       "      <td>0.071193</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>S-ZORB.PC_5101.PV</td>\n",
       "      <td>0.054732</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>S-ZORB.TE_9001.PV</td>\n",
       "      <td>0.053090</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>S-ZORB.PDI_2102.PV</td>\n",
       "      <td>0.050446</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>再生吸附剂性质：焦炭</td>\n",
       "      <td>0.047638</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>S-ZORB.PDT_2104.PV</td>\n",
       "      <td>0.043697</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>S-ZORB.TE_2005.PV</td>\n",
       "      <td>0.042113</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>S-ZORB.LC_5001.PV</td>\n",
       "      <td>0.038248</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>S-ZORB.PT_2801.PV</td>\n",
       "      <td>0.036528</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>S-ZORB.LC_5101.PV</td>\n",
       "      <td>0.036270</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>S-ZORB.TC_5005.PV</td>\n",
       "      <td>0.036050</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>待生吸附剂性质：S</td>\n",
       "      <td>0.028578</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>S-ZORB.FC_2801.PV</td>\n",
       "      <td>0.024440</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>S-ZORB.FT_9001.PV</td>\n",
       "      <td>0.023968</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>待生吸附剂性质：焦炭</td>\n",
       "      <td>0.019693</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>S-ZORB.PT_2101.PV</td>\n",
       "      <td>0.018829</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>S-ZORB.FT_5101.PV</td>\n",
       "      <td>0.015335</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>再生吸附剂性质：S</td>\n",
       "      <td>0.009200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>S-ZORB.PC_2105.PV</td>\n",
       "      <td>0.003577</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>S-ZORB.PT_2301.PV</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>原料性质：芳烃</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>原料性质：硫含量</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  特征名称      重要指数\n",
       "11    S-ZORB.CAL_H2.PV  0.167599\n",
       "27   S-ZORB.TE_5202.PV  0.139669\n",
       "15   S-ZORB.TE_2103.PV  0.126358\n",
       "5              原料性质：溴值  0.124974\n",
       "19   S-ZORB.TE_2301.PV  0.123052\n",
       "2             原料性质：饱和烃  0.122578\n",
       "6              原料性质：密度  0.093132\n",
       "3              原料性质：烯烃  0.087576\n",
       "1             原料性质：辛烷值  0.079469\n",
       "26   S-ZORB.TE_5102.PV  0.071193\n",
       "22   S-ZORB.PC_5101.PV  0.054732\n",
       "29   S-ZORB.TE_9001.PV  0.053090\n",
       "12  S-ZORB.PDI_2102.PV  0.050446\n",
       "9           再生吸附剂性质：焦炭  0.047638\n",
       "18  S-ZORB.PDT_2104.PV  0.043697\n",
       "16   S-ZORB.TE_2005.PV  0.042113\n",
       "24   S-ZORB.LC_5001.PV  0.038248\n",
       "13   S-ZORB.PT_2801.PV  0.036528\n",
       "25   S-ZORB.LC_5101.PV  0.036270\n",
       "23   S-ZORB.TC_5005.PV  0.036050\n",
       "8            待生吸附剂性质：S  0.028578\n",
       "14   S-ZORB.FC_2801.PV  0.024440\n",
       "30   S-ZORB.FT_9001.PV  0.023968\n",
       "7           待生吸附剂性质：焦炭  0.019693\n",
       "17   S-ZORB.PT_2101.PV  0.018829\n",
       "28   S-ZORB.FT_5101.PV  0.015335\n",
       "10           再生吸附剂性质：S  0.009200\n",
       "21   S-ZORB.PC_2105.PV  0.003577\n",
       "20   S-ZORB.PT_2301.PV  0.000000\n",
       "4              原料性质：芳烃  0.000000\n",
       "0             原料性质：硫含量  0.000000"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_XGBR = XGBRegressor(learning_rate=0.1, max_depth=5, min_child_weight=6, n_estimators=50, random_state=666)\n",
    "model_XGBR.fit(x_train, y_train)\n",
    "y_predict = model_XGBR.predict(x_test)\n",
    "model_fearture = model_XGBR.feature_importances_\n",
    "mse_score = MSE(y_test, y_predict)\n",
    "rmse_score = np.sqrt(mse_score)\n",
    "mae_score = mean_absolute_error(y_test, y_predict)\n",
    "rr_score = r2_score(y_test, y_predict)\n",
    "print(mse_score, rmse_score, mae_score, rr_score)\n",
    "feature_important_df = pd.DataFrame()\n",
    "feature_important_df[\"特征名称\"] = x_train.columns[:31]\n",
    "feature_important_df[\"重要指数\"] = model_fearture[:31]*10\n",
    "feature_important_df = feature_important_df.sort_values(by=['重要指数'],axis = 0,ascending = False)\n",
    "feature_important_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3sAAAJJCAYAAAATCC7xAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdebgcVZ3/8fc3CZthlxAExYhEEcQgRAdkMSiIjKOODCIziIIo7mjUGRkJrnHj54CKGxFEBxUHdURREZRFAoJjouLuCIoLiwRBMuwQvr8/zmnTXu7NvUlu9Y0n79fz3CfV3afqnKqu7tSnz6mqyEwkSZIkSW2ZNNENkCRJkiSNP8OeJEmSJDXIsCdJkiRJDTLsSZIkSVKDDHuSJEmS1CDDniQ1IiI2nOg2SJKkNYdhT5JWQkScGhHPiohJEbFORMQI5SZFxFHDPP++iHjBCPMc1zc9KyJeVKdfFhH/MEq7ngZ8Y5QyN0bEOisqM8w8kyPiHyPiJxExJyKOiojPjlD27hVsj9Mj4u9Xpu6/ZRHxuYg4ZAzlNoqI64c897P679cjYuaQ1zaMiEl9j6P/PY2IwyPifWNs48OHzLtOREwZZZ6IiPVGeO2pEfGqFcy7bkQcU6eX1H3rrfXx5RGx6TDzbBQRm9fp3SLioIjYJyLOG6GOJ0XEFXV68khtHTLPDRGxwRjKrXT7JWmirfBLXZL0AHcBdwCzgU8AMyLiKmAD4P7MfEwtNxV4a0R8PzN/EBFnAy8HbgPuiYiHAWdm5l59yz4ceGed/hVwVD34PhI4oL8RNfy9GbinPjUZeGxEXFofrwd8MzPf1DfbPZl5b53/auD/+l7bHDg1M99eXz8A+HvgIGA68F7gd8DD+uoc6vrMzIh4BNC7ieu1tc5lQK/ufwZemplz6sH474A5mfnzGpBOBO4EXpyZ364H1G+o7b0beGtmfnKENoyriLi5tm8k2wIvzMxzIuKJwC6ZuYCyn0yq+8b/UdYfyv+7F2Tm6+vju6jbMyLeD+wKPCwiLgYeB5wREbdmZu/9PwfYISJuqo+nAyfV0HY9cCtlG/XavxfwTMr+uQnw4Po3tdb7duArtfgRwBERcW99vAdwObA15cfhP9R/b6PsG/3b6bHAR4GjI+LJwNHAyzNzaa9MZt4TEftGxM/rej8F2CoitgG2ycw/D7N9jwPuA+YBzwWWAhcCtw9TlrpOvfY/EfhaRNxA+cyuC2wFPDYzb+yb5y7g3roN/5CZ0+s67QzsnJmfXY32S9KEMuxJ0hhExJbALGAbYBfg+8DewH9n5r4R8Y/AP9ayD6IcIL8cWDciptXFPBGYQTlgvoflgajnjjr/DsCnKQfV1wNXARdExPcy82W17MbApZn5utrzsU5m/rH2+uyamYv62j4JiDrd+96/m3KQf399vAt/HeK2oBzQHg18KjOPr/M/aZhtM7ku/66IWB/4FCU8PgLYvq7DvX1lzwLeWQPCLsB3a9DbCvgQsCclnHw5Irav1XwoM4+tB9Y/jIivZuZNjJOI2AWYkZlnD3np3szcZQXzfZLl4eKhwF7AAsp2vT0ztx9S/vnA/nV6K0rwmlKDxXGZeXtEfDAzj6k9dO8D/hJM6r52CmX/WA94fma+OyKOre24n7pf1ff6KuDrwM31778oIeyHfW1aNzPvycyPR8RU4Pm9l4ANaz29aXjgDw8vpAT0jwCPooSqJwCLIuKZmfnLWu5hwDcp+9Zk4PGUIP1M4Dt9y1s/M++qDz8OfCsijgcOpIS9fwK2jYjLgQdR9vdlEfGu+to2EfET4FnAIcDrKGHxbcAxQ4LeX2TmvbXn9BP1qevqOqxTX1uV9kvShDLsSdLYbEE5SN+TEoI2ovS+3Vlfnw1cUaenU3rp7qEc+F5ECTEPBS6uZTYG3gN/6UX7V+DREfE1ygHp7PraoszcIyLmAP/S154AsvaMPZcSQt9cX/tqRDwEmFJ71fan9OBMAy4F/h/lYPXLLO9xur8uE4DM/AzwmRoke2VGshfwYWA74PLMfHxt+2LgVbUX8iHAPwBHZOYFEXES8ArKAfO/1uU8E7gkM39V578DeEx/RZl5bURcCzwSGLewRwmdc4AHhL3alqMo4b3nZ5nZG457X/33fpaH5w0o+8lweiF/T0rP6cbAXOCDEfFV4KraswdwHvBB4LTaS7czsBMl+KwHPCoiXjxCPc+vbb6377mdgdMjor9nbN2I2Csz7wG2pATrT0bEHzJzdkS8DFg/M98fEdfwwP1hKfAO4MmUcH8qpTf6CcBM4Je13JbADsDBlM/PQ+vzTwe2johFdd3OoYQ0MvPquu0fAdyWmXtHxGzg2Mw8eEg73gp8gRI8D6B8/q6n7GeLgZNZ/hklIg6n9Bg/hPIDwiuAWzLzRf0LjYjja5Bc6fZL0kQz7EnSGGTmzyLi7cBrgM9QDsJ3oAyHg3Lw928RsTulF+G+zHx7PX/oS5QeijsoB+i9HpgN6gH1eRFxH3BaZj4jil8CSygB8NI637f7mhSUkHExpXdo3YjYp762WS17KfCmzDwPOC8i/kAJZvdTDvqf27e8KZThcdQAeW9m3k8Jq/1hYXkDSi/dpDrU8nDgnMx8fEScTOnduiszj4uIeZQD7bMz84I6+2nA/wK/y8ze0NPHAL/pq2I+ZVhif507Ug6ye4HwX4FXU0L3azPz3NqT+f+AQymB8MWZ+b0o52V9ljI8cSlwZGZeVgPMZnUbPh34SG84a5/NgY9l5qkRMYOyD6zIgyg9nVOAzMwHBObM/GIdMrkncAzlPb0N+GRfsT1YHsLvowTIbYFr63ZYRumlXYch/6fXoa6frO/NJvXp6ZRzO6+tj7+dmT/um20d4KDao7pxRMynDC2dEhFbAJvWeu6JiLdRQs0dwPq1Xb+hbPsHU/bfyRHx+szcF7imbpdPUH642Bi4AHgJ8LTMXBgRV2fmIfCXnsnMzAtr7/g7a+B9NPDgOj0J+HNm/qgOs7y/PrczZVjqPwD/XbfxS4DropwTeUBmnkEZJnsNZfjtfRGxce0lva1ujx2APTPzHbXcmNsvSWsCw54kjd0/UQ68303ptfgBsHdE7JyZr4mIWylDv5ZQDjTfSulN+35m7gpQe+5elZm/GbLswylh43RKb8P19Zy2RUPO6+tZnxKm9oiIo4HdKQehAGdl5j79hWsP3frAZZTejX0o5z2tRwkRy4B96xDU3YFnRkRSz3OKiF/URW0MTI2IPSgH1WdSehT/AXhQHWJ4IiVQfDUi3gn8dGjjM/OOKOez/bDv6U0o54X1ypxZ2w6lh/BISu/KWzPz5ojYD3ghZXjtQ4ALI2IWpYdwF0rv35OAz0fEoym9YdtQhtjuA+wHXJaZMyLiCMp5g0cMs63hgUNuhz4eahpl+OURwCsjohf2Ngcu6St3GOU9uJgyDPguSijqmUkNe5l5RUSsC9yRmR+OclGeh2bmGXW976zrfT9/7U2UffYOSm/Xn4AbKEHtHqA/7P0HpRcbyn6xPfBvfa9/rraRzHwL8Jb6A8dJlO35J0qw2q+ux9sys9fzuQtliO8GdTu8nrKv/ALYLSL+h+UhC8oQ4hdExMMpva7Ppux/e1J+KHg/8D+1/T+KiEfW7blHXbf3A2+k9Dj/V2buGBEbAdtl5tBz/o6OiK9T9uNH9T2/mDKUdlXaL0kTzrAnSWMQJXG8EjgX+DzlYPIuSg/WOynnBx0IHJyZd0fEH6Oc3/ZzYJ2IuLAuahalN6G36AMoB9fbUoLihpQhcI+swyB3jOUXXZmSmbvX6anAjfXg/4eUg89eKHzPkLYfTulZmwo8PTNv6Z1XFBGfplyY5eK+Wb5ACZzUnq65vQuERDnnbL/+UBTlwhbPA26hDA/diXIwfhvl3LIvsnz4am+eWZRepoMj4s31Qh73AOvVXpwfU8Jpb6he75y9RwIXR8RFdXt/OjNvAW6JiO9SzqM8EPh4PW/qwhrCdwaupFxg5l2UXsx3MHbrA2+OcrXJdRn+AiHrUHrA1qMEzavr+Wqn9q338ylBqLcNHkTpmTuNElLuo/xIsAMlRKxDGcZJROxNGSJ4WF3cn4CfRMSkzLwyIvas6zZ/SLuSMkx0GWU/O5ISDB8KfKuvbedReqjvpxwf7EgJ3x+r69/rkd6sDnm8py53c0oIegllWO7JdX2eBvwgIj4CnE4Jri+mDMm8lvIeXEEJcacBi+pfaXTmRyJiQd92fGkN+PfWebfPzHl96/meuq6XZea/1eGtL6WE5W3r/rEh5ccM6vY6lHLRlodRLqTzLeBHfct8RC1zzcq2X5LWBN56QZLG5p8pF7v4PXBDZj6Lcr7V+4CbI+IDwM2Z+dta/tOUHojLKQfw91EO+l8N/JnSi7Mh5eD5UErPCJTzi04CHlvnuSYz96q9e/0/0G1DCYcnUHrXXkI5d+jpwHujXPGy53pKz+EfazACuKIOywP+cpn64W7L8BLKuX0rcgRlWOu9lIP/31GGRR5A+X/mAyy/uEfPGym9SF+mHJBDGQL4iMxckplbUXpVhg5NvJqyTf+u91T/y32PH/B8nfdxwE8oYfb0Udarv975mbltZu6SmTtm5hOGKfYTygVQDqFccfO+Ycr0ewul94nM/CjlfMEnZOYcytDEOZm5J2UYMJSLgPwTcH6dZzFl6OvT6us/pJwT+ckh9VwGfLX+/QlY2Pf4ur51PCAzn0T54WJ94AWZuSMl4KwL7J+Ze9b1v5hywZcPUa6YOYuyzx9HOU/wZZSe5hdThvrelZkfo+zfF2Xm4yjv43cz83eU4Piu2qahehecCcpw1y/U56dExFYR8R/18SF1Gb31ObW+TwcDV2Xm32XmTpnZuwrt1pQfIv4IHJ+Zf6IM753f9/dj6jDm1Wi/JE0Ye/YkaWx+RPnVvnefrdlAZOZV9bym/6UEOWpv23cpw7weRd8B9TASODHL1f7ekplL6lCzsym3O3hTXeZ6lOFjPbOAMzLzSxHxXsqVNQ+hHPhf3xsCCZCZ36rL+Gj99yGUS8XfVHsYT6b0VH2OGj5quVdTzo86dJRt83lK78kzKEMSP0k52J8KvDIzXxHlapO95T6Cctn6oyjB44Ials8G3hQRj6GEkgdcBTPKFSx3pwSLHwAn1qGjW1EC4EspQfOoKLe72J1yntlP6jDQXSiB9DrKrQJ6bgIeXuvYIpdf6XPY+wYObRZAliuK3kQJqc+JiMOA4ynbthc+N6/rDCUILe1bzoeBx0TExpSL7yyhBMh7I+IZdR9ZH1gcEb2ruT4c2CMi/o8SrJdRhhj3ttc/U3oJt63lN6b0cs6o5edFxOU16PRsTznn8/V1H3gkMC8z/2qIYmb+AvhFHUY8lRL8FgIvovQKXgK8OTM/3DfbpsCy2tO9K6VHEEqg/SDlHLih23ZKlPNDPwUszcyv1F7OD1CGevZujZC9HvOIeCalh7R3PuP2Uc6fXaeW3S0zP1/LDv1hoH89hwb2lW2/JE0ow54kjUFm/gT+chuDTSkXoXhblNsknAX8O+XguHcFzmdTwtMxlHP4Xlif7x1YTqFeUTPrve8o92XbGzgFODkz/zsi5tXz6BZSLjRBRGxC6dH5aW3b9RHxFkoY/RPlPLXh9EZzHFMWE2+lBKNX9w/jrMHyzZSLUOzT1z4YJvxkvb9YlAtqzAE+mfWiKxHRGybYP5Lk9cDpmXkn8MuI+DGlF+nUOjzwvLoeV/fN0ztn735K0DunHtyfQQnidwEvynL7iU/U7fNrSoh7bh1a+wXgOZTz1e5g+VVAqXW+OCL+SOkJ7QXNyVGusjiSGZTePCLiUZT36OO1120xQy7kUodxPqNut5uj7ybmmXl0lAvQzKfcLuBltf0f7L0Hmdnrkest71Tgc71AP1QN/Wf2lb+YciGbHw4tGxEbUsLoXZR9aTPKuZDvpoTXN1DCzNmZubBv1isowfsWyhDVUyn75pOzXlm1z7cpwfNFlKB2WJTzP4+k9GifGxH/kpm/rQHvk5RexnMpn6ez6notpF50JiKm1312BqXn7fbMPIcy5JWI2I5yi5TeEOje+k6jBLZNWH6e4yb89TDoR6xq+4duX0maCJE52jnmkqSeiDiNciXIjYCfUc77emlmfrOeT3Ym5T5mi/vmWZ9ywZL961NTKUPdnlmHzfXKXVXLzMjMi+pzPwV2y777dkXEoZTz886iXFBiJ0qP2tcovTZ/Rxma9kfKcMXrKAepWwHHUi4q8STKUNKjKENC76vrdCRlqOobKL1yf3V7g3oe1FMzs3+YaO+1P2a9IfWQ519PCS97Z+avR9q2a6KI+EZmPn0Fr7+dMmTz27W39xmZ+bYVlH84pVf1O/XxBpThwTtQQtxvgTfWAB+UQPpSyrmIh1CG1d7Zt8itKL2Dd/Q9txHlIjU7UnoWb2P5jwyPpgyz7S1jMjA1M3et++/ZtT2XAt/IzL9cXKf2OB8GLMvMj9fndqeEu3Uoofs84It9w4X7131H4AxKWP9IDeCnUILWsZl5a0QcA+yUmS+NcgGa11B+OHk8ZSjyrpTPzwaUfX4jyrl221NC2FzKOag/6qt3J8pFi3Ya0p4Ztc3/lZkvqT3yv87Mh/aV+TTlPpPfXNn2D11/SZoIhj1JWkW1J4T+4W1RLpYx9GqIw827CWVI2ip9Cdfz67agDOdcnJlLhry+HTAzy20XiIiZlIP8dYFNM/P3q1LvarT1vlVd17VFjHAz7ohYLzPvnog2jUVEbNrr3ZUkrVkMe5IkSZLUIK/GKUmSJEkNMuxJkiRJUoMMe5IkSZLUoL/pWy9sscUWOWPGjIluhiRJkiRNiMWLF9+UmdOGe+1vOuzNmDGDRYtWdPsjSZIkSWpXRIx4b0+HcUqSJElSgwx7kiRJktQgw54kSZIkNciwJ0mSJEkNMuxJkiRJUoMMe5IkSZLUIMOeJEmSJDXIsCdJkiRJDTLsSZIkSVKDDHuSJEmS1CDDniRJkiQ1yLAnSZIkSQ0y7EmSJElSgwx7kiRJktQgw54kSZIkNciwJ0mSJEkNMuxJkiRJUoMMe5IkSZLUoCkT3YDxcuNJ8ztZ7pZz53WyXEmSJEnqkj17kiRJktQgw54kSZIkNciwJ0mSJEkNMuxJkiRJUoMMe5IkSZLUIMOeJEmSJDXIsCdJkiRJDTLsSZIkSVKDDHuSJEmS1CDDniRJkiQ1yLAnSZIkSQ0y7EmSJElSgwx7kiRJktQgw54kSZIkNciwJ0mSJEkN6izsRcRpEXF5RMxbQZnpEbFwmOfPiYhdumqbJEmSJLWuk7AXEQcBkzNzD2C7iJg5TJnNgE8BU4c8fxhwdWb+sIu2SZIkSdLaoKuevTnAWXX6fGCvYcosA54HLO09ERGbA/8B3BIR+3bUNkmSJElqXldhbypwbZ2+GZg+tEBmLs3MW4c8PRf4PHAK8IKIeNbQ+SLi6IhYFBGLlixZMs7NliRJkqQ2dBX2bgM2qNMbrkQ9jwc+nJk3UHoG5wwtkJkLMnN2Zs6eNm3aeLRVkiRJkprTVdhbzPKhm7OAa8Y431XAdnV6NvDb8W2WJEmSJK0dugp7ZwOHR8SJwCHATyNi/hjmOwF4VURcBuwDfKKj9kmSJElS06Z0sdDMXBoRc4D9gRPqsMwrRyg7p2/6OuDvu2iTJEmSJK1NOgl7AJl5C8uvyClJkiRJGqDObqouSZIkSZo4hj1JkiRJapBhT5IkSZIaZNiTJEmSpAYZ9iRJkiSpQYY9SZIkSWqQYU+SJEmSGmTYkyRJkqQGGfYkSZIkqUGGPUmSJElqkGFPkiRJkhpk2JMkSZKkBhn2JEmSJKlBhj1JkiRJapBhT5IkSZIaZNiTJEmSpAYZ9iRJkiSpQYY9SZIkSWqQYU+SJEmSGmTYkyRJkqQGGfYkSZIkqUGGPUmSJElqkGFPkiRJkhpk2JMkSZKkBhn2JEmSJKlBhj1JkiRJapBhT5IkSZIaZNiTJEmSpAYZ9iRJkiSpQYY9SZIkSWqQYU+SJEmSGmTYkyRJkqQGGfYkSZIkqUGGPUmSJElqkGFPkiRJkhpk2JMkSZKkBhn2JEmSJKlBhj1JkiRJapBhT5IkSZIaZNiTJEmSpAYZ9iRJkiSpQZ2FvYg4LSIuj4h5KygzPSIWDvP8YyPim121TZIkSZJa10nYi4iDgMmZuQewXUTMHKbMZsCngKlDng/gRGCdLtomSZIkSWuDrnr25gBn1enzgb2GKbMMeB6wdMjzRwIXddQuSZIkSVorTOlouVOBa+v0zcCuQwtk5lKA0pFXRMSDgecDB9S/B4iIo4GjAbbddtvxbPOY3XjS/E6Wu+XcEUe8SpIkSdJK6apn7zZggzq94UrU8x7g3zPz3pEKZOaCzJydmbOnTZu2ms2UJEmSpDZ1FfYWs3zo5izgmjHO92TgvRFxMbBLRHTThSZJkiRJjetqGOfZwMKI2Bo4EDg0IuZn5grHKWbmo3rTEXHxaOUlSZIkScPrJOxl5tKImAPsD5yQmTcAV45Qds7KPC9JkiRJGl1XPXtk5i0svyKnJEmSJGmAOrupuiRJkiRp4hj2JEmSJKlBhj1JkiRJapBhT5IkSZIaZNiTJEmSpAYZ9iRJkiSpQYY9SZIkSWqQYU+SJEmSGmTYkyRJkqQGGfYkSZIkqUGGPUmSJElqkGFPkiRJkhpk2JMkSZKkBhn2JEmSJKlBhj1JkiRJapBhT5IkSZIaZNiTJEmSpAYZ9iRJkiSpQYY9SZIkSWqQYU+SJEmSGmTYkyRJkqQGGfYkSZIkqUGGPUmSJElqkGFPkiRJkhpk2JMkSZKkBhn2JEmSJKlBhj1JkiRJatCUiW6AVuzGk+Z3stwt587rZLmSJEmS1gz27EmSJElSgwx7kiRJktQgw54kSZIkNchz9vQXnh8oSZIktcOePUmSJElqkGFPkiRJkhpk2JMkSZKkBnnOniaE5wdKkiRJ3bJnT5IkSZIaZM+emmcvoiRJktZG9uxJkiRJUoMMe5IkSZLUoM7CXkScFhGXR8SIY90iYnpELOx7vG1EXBwRF0bEgoiIrtonSZIkSS3rJOxFxEHA5MzcA9guImYOU2Yz4FPA1L6nXwq8PDOfAjwM2LmL9kmSJElS67rq2ZsDnFWnzwf2GqbMMuB5wNLeE5l5XGb+vD58MHBTR+2TJEmSpKZ1FfamAtfW6ZuB6UMLZObSzLx1uJkj4nnATzPzumFeOzoiFkXEoiVLloxnmyVJkiSpGV2FvduADer0hitTT0RsB7wBeO1wr2fmgsycnZmzp02bttoNlSRJkqQWdRX2FrN86OYs4JqxzFTP4zsTeNFIvX6SJEmSpNF1FfbOBg6PiBOBQ4CfRsRY7mx9LLAtcHK9KueTO2qfJEmSJDVtShcLzcylETEH2B84ITNvAK4coeycvuk3Am/sok2SJEmStDbpJOwBZOYtLL8ipyRJkiRpgDq7qbokSZIkaeIY9iRJkiSpQYY9SZIkSWqQYU+SJEmSGmTYkyRJkqQGGfYkSZIkqUGGPUmSJElqkGFPkiRJkhpk2JMkSZKkBhn2JEmSJKlBhj1JkiRJapBhT5IkSZIaZNiTJEmSpAYZ9iRJkiSpQYY9SZIkSWqQYU+SJEmSGmTYkyRJkqQGGfYkSZIkqUGGPUmSJElqkGFPkiRJkhpk2JMkSZKkBhn2JEmSJKlBhj1JkiRJapBhT5IkSZIaZNiTJEmSpAYZ9iRJkiSpQYY9SZIkSWqQYU+SJEmSGmTYkyRJkqQGGfYkSZIkqUGGPUmSJElqkGFPkiRJkhpk2JMkSZKkBhn2JEmSJKlBhj1JkiRJapBhT5IkSZIaZNiTJEmSpAYZ9iRJkiSpQYY9SZIkSWqQYU+SJEmSGmTYkyRJkqQGdRb2IuK0iLg8IuatoMz0iFjY93idiDgnIi6LiBd11TZJkiRJal0nYS8iDgImZ+YewHYRMXOYMpsBnwKm9j39amBxZu4JHBwRG3XRPkmSJElqXVc9e3OAs+r0+cBew5RZBjwPWDrCfJcAs4fOFBFHR8SiiFi0ZMmS8WqvJEmSJDWlq7A3Fbi2Tt8MTB9aIDOXZuatqzDfgsycnZmzp02bNo5NliRJkqR2dBX2bgM2qNMbrkQ9qzqfJEmSJKlPV2FqMcuHbs4Crul4PkmSJElSnykdLfdsYGFEbA0cCBwaEfMzc8Qrc1afAr4eEXsDOwLf7ah9kiRJktS0Tnr2MnMp5WIrVwD7ZuaVIwW9zJzTN/1bYH/gMmC/zFzWRfskSZIkqXVd9eyRmbew/MqaKzPfdasynyRJkiRpOS+AIkmSJEkNMuxJkiRJUoMMe5IkSZLUIMOeJEmSJDXIsCdJkiRJDRo17EUxe4TXHjH+TZIkSZIkra6x9ux9OSJOjIhXRcQTACJiN+Cz3TVNkiRJkrSqVnifvYiIzMyIuAo4BXg4cGBEnALcDTx3AG2UJEmSJK2k0W6qfm5E3AZsAmwP7AbMBr4C7ARMA/7QaQslSZIkSStttLB3MKU371XA24HrgWdn5rKImAF8IiKempnZaSslSZIkSStltLD3CmAmcBPwI+D9wG8i4jPAY4E3GvSk5W48aX4ny91y7rxOlitJkqR2jXaBlo2BBJ4ErEsJh1cCPwRmAD/tsnGSJEmSpFUzWtj7FvAb4PHAL4HnALOApwMnAG/qtHWSJEmSpFUyWtjbF7gH+BDwaOAM4Crgisw8A3hkRHhjdkmSJElaw6zwnL3MfEtETKVcjXNZLT8vM79Ti7w8M+/vuI2SJEmSpJU02gVayMzbI2IzYL3M/A1wbd9rf+6ycZIkSZKkVTPaTdV3AqZSLs5ybL25+k715UnApMzct9smSpIkSZJW1mjn2z0IODgzLwUWATtS7rn3OWCZQU+SJEmS1kwrDHuZ+T1g697DIf9KkiRJktZQKwx7EbE9MCkiZgLT69PbAA8G1o+IbTtunyRJkiRpFYw2jHMecDvwr5QbqX8LOAyYSbnv3ts6bZ0kSZIkaZWMduuFIwAi4jTg08ArMvPFA2iXJEmSJGk1jHY1zkuA+4BZwCOA3SLi7+vL9wFfysyPdttESZIkSdLKGu0+e0/JzPsi4uLMfEpEHApMy8yTI+JA4AzAsCdJkiRJa5jRhjHaFm4AACAASURBVHHeVyePrf9+GXhWnb4EmNFNsySN5saT5ney3C3nzutkuZIkSRqsES/QEhGTImJ3gMy8ov57J+XiLGTm7cCGg2ikJEmSJGnlrOhqnAEcBxARH42ID0XELGCf+tzGlGGckiRJkqQ1zIhhLzOXAffWh7OACyjDNns3VT8Q+EKXjZMkSZIkrZrR7rO3XUS8AtgMmF2fe0xEfBw4CDiry8ZJkiRJklbNaGHvduBq4E7g97X8Tyg9ejtn5i3dNk+SJEmStCpGC3uTgfVqufWAtwObArcB90XEnE5bJ0mSJElaJaOFvfWBh1GC3pbAu4DtgVOA1wPP67R1kiRJkqRVMlrY+3Vmfhi4FfgxcAewGPggcCHeZ0+SJEmS1kgrus/eZGDd+vA7wOMp5+9FZi6oV+vcICKi+2ZKkiRJklbGlBW8lsCJNcydm5nfBIiI7/WVeXNm5rBzS5IkSZImzIrus3c/cHl9ODciemXfGhHrRcRrqTddlyRJkiStWUY7Z+/zteduGfDZiFgC/ArYh3JT9bs7bp8kSZIkaRWsaBgnwJKI2LhO/wp4MHAOcH/9kyRJkiStgUYLe1cDRwMPpfTubQU8Edga2AZ79iRJkiRpjTTaMM4bgC1quXUoN1mfwvIbrY82vyRJkiRpAowW1v5EuZ/e7yj31/sD5TYMXwV+D1w70owRcVpEXB4R88ZaJiI2i4ivR8SiiDhlJddFkiRJklSNFvbuBDav0ztQ7rX3Spb38A0rIg4CJmfmHsB2ETFzjGUOBz6TmbOBjSJi9squkCRJkiRp9HP2fkW5sfoLgef17qkXEesADwEOG2G+OcBZdfp8YK+6rNHK/Al4bERsCjyM0nsoSZIkSVpJK+zZy8yrgV8A7+u/eXpm3puZn2Lk++xNZfkQz5uB6WMscynwcOAY4Of1+b8SEUfXYZ6LlixZsqLmS5IkSdJaa7SePWrIu2CE1743wmy3ARvU6Q0ZPlQOV+YtwMsyc2lEvA44ElgwpM4Fvedmz56dSOrcjSfN72S5W84d8ZReSZIkraaurqa5mDIsE2AWcM0Yy2wG7BwRk4G/AwxzkiRJkrQKRu3ZW0VnAwsjYmvgQODQiJifmfNWUGZ34CrgdMpQzsuBMztqnyRJkiQ1rZOwV4dhzgH2B07IzBuAK0cpcyvwP8BOXbRJkiRJktYmXfXskZm3sPxqm6tcRpIkSZK08ro6Z0+SJEmSNIEMe5IkSZLUIMOeJEmSJDXIsCdJkiRJDTLsSZIkSVKDDHuSJEmS1CDDniRJkiQ1yLAnSZIkSQ0y7EmSJElSgwx7kiRJktQgw54kSZIkNciwJ0mSJEkNMuxJkiRJUoMMe5IkSZLUIMOeJEmSJDXIsCdJkiRJDZoy0Q2QpH43njS/k+VuOXdeJ8uVJElaU9mzJ0mSJEkNMuxJkiRJUoMMe5IkSZLUIMOeJEmSJDXIsCdJkiRJDTLsSZIkSVKDDHuSJEmS1CDDniRJkiQ1yLAnSZIkSQ0y7EmSJElSgwx7kiRJktQgw54kSZIkNciwJ0mSJEkNMuxJkiRJUoMMe5IkSZLUIMOeJEmSJDXIsCdJkiRJDTLsSZIkSVKDDHuSJEmS1CDDniRJkiQ1yLAnSZIkSQ0y7EmSJElSgwx7kiRJktSgzsJeRJwWEZdHxLyVLRMRH4mIZ3bVNkmSJElqXSdhLyIOAiZn5h7AdhExc6xlImJvYKvMPKeLtkmSJEnS2qCrnr05wFl1+nxgr7GUiYh1gI8D10TEsztqmyRJkiQ1r6uwNxW4tk7fDEwfY5kXAD8DTgCeGBGvHjpTRBwdEYsiYtGSJUvGveGSJEmS1IKuwt5twAZ1esMR6hmuzOOBBZl5A/BpYN+hM2XmgsycnZmzp02bNu4NlyRJkqQWdBX2FrN86OYs4JoxlrkK2K4+Nxv4bUftkyRJkqSmTelouWcDCyNia+BA4NCImJ+Z81ZQZnfgfuATEXEosA5wcEftkyRJkqSmdRL2MnNpRMwB9gdOqMMyrxylzK31ped20SZJkiRJWpt01bNHZt7C8qttrnIZSZIkSdLK6+ym6pIkSZKkiWPYkyRJkqQGGfYkSZIkqUGGPUmSJElqkGFPkiRJkhpk2JMkSZKkBhn2JEmSJKlBnd1nT5LWdDeeNL+T5W45d14ny5UkSVoZ9uxJkiRJUoMMe5IkSZLUIMOeJEmSJDXIc/YkaQA8P1CSJA2aPXuSJEmS1CDDniRJkiQ1yLAnSZIkSQ0y7EmSJElSgwx7kiRJktQgw54kSZIkNchbL0hSY7zNgyRJAnv2JEmSJKlJhj1JkiRJapBhT5IkSZIaZNiTJEmSpAYZ9iRJkiSpQYY9SZIkSWqQt16QJK0yb/MgSdKay549SZIkSWqQYU+SJEmSGmTYkyRJkqQGGfYkSZIkqUGGPUmSJElqkGFPkiRJkhpk2JMkSZKkBhn2JEmSJKlB3lRdkvQ3wRu4S5K0cuzZkyRJkqQGGfYkSZIkqUGGPUmSJElqkOfsSZI0hOcHSpJaYM+eJEmSJDXIsCdJkiRJDeos7EXEaRFxeUSMOGZlpDIRMT0iftBV2yRJkiSpdZ2EvYg4CJicmXsA20XEzJUs8z5ggy7aJkmSJElrg6569uYAZ9Xp84G9xlomIp4C3A7c0FHbJEmSJKl5XYW9qcC1dfpmYPpYykTEusDxwLEjLTgijo6IRRGxaMmSJePYZEmSJElqR1dh7zaWD8PccIR6hitzLPCRzPzzSAvOzAWZOTszZ0+bNm0cmyxJkiRJ7egq7C1m+dDNWcA1YyyzH/DKiLgY2CUiTu2ofZIkSZLUtK5uqn42sDAitgYOBA6NiPmZOW8FZXbPzM/2XoyIizPzxR21T5IkSZKa1knYy8ylETEH2B84ITNvAK4cpcytQ16f00XbJElak9x40vxOlrvl3BHvfCRJWkt01bNHZt7C8qttrnIZSZIkSdLK6+ym6pIkSZKkiWPYkyRJkqQGdTaMU5IkrVk8P1CS1i6GPUmSNO4GGSwNsZI0PIdxSpIkSVKDDHuSJEmS1CDDniRJkiQ1yLAnSZIkSQ0y7EmSJElSgwx7kiRJktQgw54kSZIkNciwJ0mSJEkNMuxJkiRJUoMMe5IkSZLUIMOeJEmSJDXIsCdJkiRJDTLsSZIkSVKDDHuSJEmS1CDDniRJkiQ1yLAnSZIkSQ0y7EmSJElSgwx7kiRJktSgKRPdAEmSpL8VN540v5Plbjl3XifLlbR2s2dPkiRJkhpk2JMkSZKkBhn2JEmSJKlBhj1JkiRJapBhT5IkSZIaZNiTJEmSpAYZ9iRJkiSpQYY9SZIkSWqQYU+SJEmSGjRlohsgSZKkB7rxpPmdLHfLufM6Wa6kNY9hT5IkaS1nsJTa5DBOSZIkSWqQYU+SJEmSGmTYkyRJkqQGGfYkSZIkqUGGPUmSJElqkGFPkiRJkhrUWdiLiNMi4vKIGPGau0PLRMQmEXFuRJwfEV+KiHW7ap8kSZIktayTsBcRBwGTM3MPYLuImDnGMocBJ2bm04AbgKd30T5JkiRJal1XN1WfA5xVp88H9gJ+NVqZzPxI3+vTgBs7ap8kSZIkNa2rYZxTgWvr9M3A9JUpExF7AJtl5hVDZ4qIoyNiUUQsWrJkyfi2WpIkSZIa0VXP3m3ABnV6Q4YPlcOWiYjNgZOBfxpuwZm5AFgAMHv27By/JkuSJKlrN540v5Plbjl3xMtESGutrnr2FlOGbgLMAq4ZS5l6QZbPA/+emb/tqG2SJEmS1LyuevbOBhZGxNbAgcChETE/M+etoMzuwFHArsBxEXEc8NHM/K+O2ihJkqSG2YuotV0nYS8zl0bEHGB/4ITMvAG4cpQytwIfrX+SJEmSpNXQVc8emXkLy6+2ucplJEmSJEkrr7ObqkuSJEmSJo5hT5IkSZIaZNiTJEmSpAYZ9iRJkiSpQYY9SZIkSWqQYU+SJEmSGtTZrRckSZKktYU3cNeayJ49SZIkSWqQYU+SJEmSGmTYkyRJkqQGGfYkSZIkqUGGPUmSJElqkGFPkiRJkhpk2JMkSZKkBhn2JEmSJKlBhj1JkiRJapBhT5IkSZIaZNiTJEmSpAYZ9iRJkiSpQYY9SZIkSWqQYU+SJEmSGjRlohsgSZIkaexuPGl+J8vdcu68TpariWPPniRJkiQ1yLAnSZIkSQ0y7EmSJElSgwx7kiRJktQgw54kSZIkNciwJ0mSJEkNMuxJkiRJUoMMe5IkSZLUIMOeJEmSJDXIsCdJkiRJDTLsSZIkSVKDDHuSJEmS1CDDniRJkiQ1aMpEN0CSJEnSmunGk+Z3stwt587rZLn6a/bsSZIkSVKDDHuSJEmS1CDDniRJkiQ1yLAnSZIkSQ0y7EmSJElSgzoLexFxWkRcHhEjXmpnuDJjmU+SJEmStGKdhL2IOAiYnJl7ANtFxMyxlBnLfJIkSZKk0UVmjv9CIz4IfCMzvx4RhwIbZObpo5UBHj+G+Y4Gjq4PHw38chWauAVw0yrMtyqsy7qsy7qsy7qsy7qsy7qsy7q6quvhmTltuBe6uqn6VODaOn0zsOsYy4w6X2YuABasTuMiYlFmzl6dZViXdVmXdVmXdVmXdVmXdVmXda3JdXV1zt5tlJ46gA1HqGe4MmOZT5IkSZI0iq7C1GJgrzo9C7hmjGXGMp8kSZIkaRRdDeM8G1gYEVsDBwKHRsT8zJy3gjK7AznMc11YrWGg1mVd1mVd1mVd1mVd1mVd1mVda3pdnVygBSAiNgP2By7JzBvGWmYs80mSJEmSVqyzsCdJkiRJmjheAEWSJEmSGmTYkyRJkqQGrRVhLyIOj4jpE92O8RQRe0fE5Ilux3hrdb00Pgb5WR5wXQPb71v9jLW6XoPU6uerVb5fq2/A371NbsNBcfuturUi7AG7AN+IiMUR8e6ImBMRnVyJNCKOj4gnRkR0sfw+rwWuiogvRcRLI2JGVxVFxKSImLqC1w4Zx+oGtl79ImLniNiq7/GkiDhiEHXX+vbtaLmdrteA9w0Y4Gd5wHUNcr8f+GcsIl4xzHNzxrmaQX4nDup7fqB10ejnKyIujIh/i4hZXSx/mPp2q/9GPUB9SUSs30FVTb5fPa19bzDgbTio/XCA31ED3wdhsMeHEXHAMM/tttrLXZsu0BIR04CnAAcAzwYuzcxnj3MdrwaeCjwO+C5wHnBeZl4/nvXUugLYrdb3FGAb4ILMfM0417MdcDDwPWCzoS8DR2TmM8exvkGt1yGZeVb9pegC4CXAOzJzv/r6t3rT41DXZODzwPOAL2TmsyNiUmbeX19fmJl7j1Ndg1yvge4bffV2/lkedF2D2u8HVVdEXAHcC/wL8MXMfGJEHEy57c404MuZ+cTxqq/WOajvjkF+zw+srr46m/p8RcTOlG24H/Ao4DvAN4BvZuafxrmu/wTuysyjI+L9wJbAT4AnZOZzxrOuvjqbeb9a/t7oq28Q+/zA9sNBf0cNaPsN8jhqa2AZZb8/A3gdMBlYStkvX5WZ+69OHZ0n4jVFROxA+aLfH3gM8DXKDjmuMvNk4OSImAQ8ATgM+FhE/DIzx/tXxanAVsDW9d+bgT+Ocx0A91F2xOOBhcB0YB/g+8CvKPdHHE+DWq+TI+JI4EHA6zPz8oiYEuX2H5OA+8erosxcVn9ROx6YGRGvA3aLiC8C5wLj+aU4sPVi8PvGwD7Lg66Lwe33g6prX+DjlP3wtvrcZsAxwE7ASeNcHwxoGw7ye37A/6c0+fnKzB8DPwbeX3+hfxPwn8CdwCbjXN3DMnPfiNieckA6KzMzIi4c53qAJt+vZr83YKDv18D2w0F+Rw1w+w3yOGoR5Vjps5SAdwKwK3A68GTg1tWtYK0IexHxa+C3lB3irZn5gw7r2oDy5uxH+aXjHsobN647Y0RcSvml5sK67OMzc+l41lHrmQLMBzYCHkL5YM0EHg38D3AZ5ZeH8apvIOtVfR94DfAl4Lr63EzgPyi9UuPtfuDblP/MHkn5EtkROISyvuNlIOs16H2j1jnIz/Ig6xrYfj+oujLzzojo/YcYEbENcBFwBHBPZp45nvUNeBsO5Ht+Aupq9fP1VMrB4X6UA7VvAU8HLu2gulsi4g3Ac4B3AFMj4qAO6mny/Wr8e2Ng7xeD3Q8Hddw7yO03yOPDX1LC3i8ovcqXABsDNzFOoXKtCHuUcb67A3d0vHMA/JzyxXQe8O7xHiLS58WUneDOzPx9R3X0LGT5f5I9OeTf8TKQ9arDNiZl5v/WL8DPRcRewK8y80W1zPnjVNc6wFeBuzPzgoh4FXAtJSD9J2UI5PvGqa6BrVc1yH0DBvtZHmRdg/w8D+oz9h6g/1fdI4GnUf4zG/ehvQx2Gw7qe37QdbX6+XoJZQTFB7oc/lo9Hzic8l59tfas7Ejp7Rhvzb1fjX9vDPL9GuR+OKjvqEHtg4M+jupJSpCcSfkBYjfKaKkHre6C15aw90HKWNhNI2L/zHxLh3U9ljLWfArw5w7rOYKyIzwoIv4zM0/popLMvK/u1JtQxsufDGxACSoPoazrjeNY5REMYL0o46EvjIjNKUHl05QDgg9HxKaU9b1vPCrKzHsj4hjgfRFxOqV7fiPgbmABcBTl17dF41DdINdr0PsGDPazPMi6jmAw+/0g67qIsq9n/fsgZZ8/FzghIl6bmVeNY31HMLhtOKjv+UHX1ern6+3APGDviHhLZl7bVUWZeQdwSt/jq4BjO6quxfer5e+Ngb1fA94PB/UdNajtN7DjqFFk399qLimz+T/KyZtQEvMlHdf1ZeA4Sk/Nhzus5zv13ykDWKe9gf1GeG0ScO7f4nrVeh5NGb7xcGB9yrkBlwIHdFDXV4AZwPm1vvOAdetrZ/4trtcg9426zEF+lgdZ1yA/z4Os6wzK+Te/BV4AvBx4F+XHgPP+htdrIN/zE1BXq5+vS4A9KT1D/91lXYP8a/j9avV7Y2DbcJB/g/qOGvT2G+Bx1EW1nhcBZ1Iu0HIh5TzVi4CvrG4da0vPXkTEQyg7yOS+aTLzuhXOufI2y8x31kq/Pc7L7ncX/KV3pbNfGCJiPcrJ7HdFxFOGKTKJMiRxvAxqvfaj/OdxD2Vs9NcoJ2XPoIyfHu8eKSgnga9PGfp4J+XcgHvqa7eMRwWDXK8J2DdqtQP7LA+yroHs94Oqqw6DeRqlx/cdlF/ON6L8+nt6Zl4fEadHxJTMHK82DHIbDup7ftB1tfr5WpaZl9VKXzfOy55ITb1fa8H3xiDfr0Ea1HfUQLbfBBwf7lD/3YmyPk+mXDV4C0ov42pbK269EBEXsXwsbL/MzOEOUlenru8Dr6x1nQy8uq+y74xjPb+mdCMHZWfoTWdmPmq86umrbzvKzv84yn1pemOyA1iv9x/pONQz6PXagvIryh+AH1HGnu9DOU/gfuCwzLx9nOo6jbI+kyihbxNgw1r3x8Z5/xjkeg1k36h1DfKzPMi6BrbfD6KuKLcaeQ9l+51A6eF9Qj1/9QPAHzPzbeNRV1+dg9yGA/men4C6Wv58nVrrOqpO9yp713jWNUitvV9rwffGwN6vQRrgce9At9+gjqOiXITobsqVzc+kHEdNAv6PcsGb5+dq3uZhrQh7g1TPyRpO5v9v77zDLSuq9P1+3XSjZERRVJQggoiCBEEUSRIElGAARaKKAZxBRgcDQWcUSaPiGBD5iVlxRkARyTRZgqgIKjpKMKMIBkTy9/tj1bEP175NuLXX6btPvc9znnPOPvfub9faa69dtatqVZnYOZ1RrHdzre3rRn0sNSi9U2sQ6ZZn2D516Lf1bV+ecAzPAFa0/a2K+0wvV998o1EPSU8cfvIqaUfbJ4/ymKZCZpzv+z0lA0l7TPab7c9mHkvjodO3uNFX+hqjJM0GnkVuPWp325+bsO05nmJCmtbYazwiFOupHGD7aEl72Z7sYl+gUSzOuRjxRGWYhWxfX1lrPaLX67fAalO9eB+i5r/bPlLSTNsTy1hLY2vgekfmqjVtX1384x3AV2rbsTF9kPRs2z8Y+j4DeAFwGfBG4L/dbkKNRmOIFjcao6b43C62vyRpI2K+YKc+p8j4eY3tKa+rN5EZD/4njXFH0rqSvi3pCkmXlC77FYBNJC1OZLOarryLmBtw8NDrEuAdZehITb5OLG76TcoYbUnvlnSYpCNrCEh6lqTnSjpA0lbAJuWn70g6S9J3Jb26htYQxwCrSVqXGHoDMczie8AHK2s1phcfUixE+yFJOxJPSd9PXGeLMz4ZoRtjiKTVi//PkrT6qI9nGtHiRkWaHz4izNxlKg5JerhwGDEiqzpj3dhTRwtMjhJJG3aw20WIxbP/BnwV+DOwDXExDBpLndJRuQYcYPv1gxdwne19bN9TWecnwLnE2jfbStqVyLR0FrHQeg3+SqQn3qzs994yp+4uoqftXUDtRuwvgKuIseyS9BHgw8AriEQ0nZN5LSdrden3GVp3lUQKzyCSLohYz+pg4LAOrrF/ItOGfaWv11cC1wIrldc1WaI9OF9jFTcSztdI/DCLLuxXGncPGA0l6UeSLpZ0mqSda+pJWpuop/26fH+XpMslXSfpnKnuf6wbe8DCWUKS3pwktX7NnUlalBg+MYyBG4ANgd/bnrIjPgSqlmsCb5N0yOAFrFQ+L9GB1lrAB4C3A6+2fant86m0No3tG4ketd8AbyaC+3OJG+Z25fNTa2iVXsTriDgyCIx3EemXjwbeQyzsmkHatZys1aXfd6oladD4fwzxJH5RIrPZYA7Vj8tvXZNmw8Q4n6pFT68vScd1LLEicD3wcyIWZzFtz9c4xg26P18j8cPEGFXdfpKuBp4v6WjmrnN3s+0XEEme3jLpPz98rRnAEcDbgI9LeiMxvWgz4JdTTc4CY9QVXoYb3jFh3lKNRawfKj/OELH9ocq7nE1kWfw+D1zc8XHlfYXKevOkg3IN+AjweKJX6lzgOcDORAOmWq+UpP0J2z0G+CmxaOwKkj5DrUUzQ+eJROD7CdEDa2AH4A7mZhk7s4YW4dNrAN8iYslsIsvoZwjbfbWL5AejvpZtfzlRqyu/nxfHP/ifPDSKH+5HZJz9GhFDnkz0PN9GLJD8xYrp0yc7jp2SbZgS57O1kn0+TQs4sMud275p6OtNk/5hfd1peb4WlLgBubG36/M1Kj8kr95b3X6215R0KvAlYMcJv/1O0u9q6CgycR5E1JtmEw/NDaxJxbrhWPTsld6abwPXSjpYkd4X4JMd6a0h6QkTNlcLTpJmSPqMpKslfVDSXpJ+LOl7kl5cSwfA9m3AJ4gnGU8DtgdWtv0Z4FLgaklvqKmZhaQvEI2SK4gnKE8DXkYM47yi8lCRvwNLEY3Jw4mx4H8E/ot4olOLPwPvBc4g1oK5mVjsVMBfiAZtlbXvbN9bbrrLEQvffoW5KZDfDqytybN0PSKyr+U+Ium1kn4u6fuSdhv66eu1NGz/xvYrgT/Z3pS4xj4IvK78yROBo8oQ4yoM986X16HA0cVnOkPS0pKeI2lx23O61BomU2u6I+mZ5X2GpO0kvVXSZuX+1oXeypNsf2IXen1hFHGjz4zCD0cVDzvCRA/v7ZKezdCSD7ZfXknjScQ0HgHbxq79SWKpBw1rToVx6dnbzPYaioQbbwXOUSSpqGLEYSQdCzwFWEbStcC/2r6dqIDXWgdkQ+Av5cnD/sSCo6sTvSpnEk+/avJdYu2UwY1x4dLtPAs4gZh3VqWyXYbVzNMvO0jh+wPgUOB3wMrA1sTN5QBJEGvEvbuGkO1PStqFSGByDbFGy49tXwNQ9Gro/A34WxlPviKwm2Mh2m2JhuV3bP+2ithctgTebPuXkrYtWu8keksPk/Qo23dW0sq8lk+hDB8a3kw3a1hl+v1eRIKgxYH3SdoO2JvKNpT078R832EGTynvIRrtNRenvZlI4PAxIsmSiF7t8ytqACDpbNtbSNoXeBPRk76WpLdN59TwyT6fpkXcvzYDBtfZVcC7JW1iu9rDAEmvs3088GlgY0lvIXz9FuLe8kVgo4p6vTtf2XEjM/Ym2jDbD1PiYbK/XwqsCvyM8Lc3AZZ0FpHn4doaOravkLQJcBIx7WXtwU9U7NnDdu9fwMXAMkPf1yeGff28A61zhj7vDFwOPBM4r6LG6sCJhJMvAaxZti9JVOZrl2kD4Gvl83+U938Hdiyf16yotTHR+7QiMbfsH68OyrUdkf1oHWIC8zeA04jG9DrABpX1ziN60/cr5+1kIpPl2cBZlTReWHT+lwjqc4jhMGcAX+rAhp8levSuJ4YhfJDoOdycsrRLZb3Ma/kZwKnA7Nr7nodWpt9fQjzIGHzfgahA/bCixmxiTsNPiERBvwd+WHRuISreszoo27LEA6iPEo3ZanF3gs555f2qgS2J4eBXdaB1YfHx84Zec7ooW7LPZ2oNztdlQ9tmAlfX1in7Pbt8v5YY9bA1sVjyutPYhp1rjSJuJMfelPM1Aj9MiYeZ/l70vkF0opw1tG2VEpPXr6z1dOAcYrkqiAeX3yHyY1wx5f1nGGzULyIpxicmbFthYNTKWnOApw99X4lYG+bXlXVeTTxdGN52EbB1B2U6uFy4uwLvLNs2JJ6SXg68pbLe+sByCX7xHODfiEbzGWXba8r5WrkDvduJIbEHAgcQDaMnE430JSprvYq5CVIWB9YjevbOBZ5WUedJxPDUvYkevmcSQ32PInqE31q5XGsBx07Y1sm1XPa9EvDYrn2xaGX5/ZbA5yZsW4ehinBFrZnEg6EfAOsCyxBDsbYHrgTW6KiMG5cbZ9XK/ND+/w/Yinj4MKNsWxT4aQdajydGa1SNEfPRy/T5FC1intIHiErv48u2Z9f2DyIx1WMplUPiQd6yxTcOns42TD5fqXEjK/Zm2TDbD5PjYZYPCjh1YL8Jvy0HXNmB5vuAXbsoz1gsql6yO80T2xdW1loeeIPtg4a2LQW8w/Y7miFtKgAAIABJREFUamqVfc8kAuEM4A/uaOHsorUUkRL570PbHgs8y5XHZkt6KlHJmQHc5PpDD4e1BDzP9qXl+wZE1qUbKuvMJIYb3F++Pwv4URfnrAxzfArxtOgC23eU7WsCi9j+dmW9FxM35Ysc2UWRtAjhG5fX1Cr7TvEPRTbadYe0bgQud0eBM9nvM2PHhsCjbJ83tG05Ip16lUy0Q/sdlGth4Am2r6y5/6LxfCKz7QbEUKk5REXnv2yf2IHeUsC9jikBnZLp81laxSeeTZyvK4ih9J8nRqr8sKLO/sSDtpWIrMgQD2F3IB6M7jeI/xU1e3e+hvQy40Zv7inZfpgZDxNjxvCi6hvYvmzC78varjkNYTCXcknb1RPbjEtj71PEuFcR68Odxtxxvvt0oLcY8aS8y4t5LWII4n1E4o3FiAt7ju1/qaWTjaStiSd61xFzBBcjshL9BXiZK6+vI2lFYv7cX4kMj3eW7dsBf6vdiO0zJTjuY/vYDjW2InpGO/cPSXsSawVeMEHrGcCLbP+1olaa388ndpxn+19r6WQzoVx/Jnq0VybK1UlMlLQC8cS86wriysQSOMP3lNNq+mDR2ZM8n0/TKnorE/OUBufrRirbULE0wPVE78mWks4FXkzUN/YAHmf7/RX19qSn5yuL5Ni7Jwk2zPbDId0V6DAe9tgHRYzKO718XnLwMEOxDMNvbH9jShrj0NgbRtIcR5anrva/J/ByYkxvlxfz+cA2gx6bsk1Emtgv2v5mDZ1sJF0EvHBiw1jSJ4EzbZ9UWe98Yk7AbKInYEliSMKXiKGBT6+p10ckXWp7w/L5HNsvknS+7U060ErzD0kX2f6nSeySPgxcbPt/a2qRV67z6WfsOJ+kciU/dHgX0Wg9C7h1SOsVwKY1ny5n+3yiVooNFYs73wEcaHvTUsm+G1jIkcDiHMJH766k18vzlUkf7ykj8MOUeNhjHxQRm14KfA44hVjS6j4iS/yptp80FY2xyMapB6aZnV2GAQgi1W9ludfOxxm3IhJn1GARovfwoqFtjyMmFmeuo1Kb+4HXSPra0NDDdYgx9TWXKBhg2/tK2p64sO4BVrP9XUlVligYA+5QZJO6lDh/EPMTuyDTP25TpO3/KpF05tFEz8CLiOUzapJZrr7GjsxyHcTkFcSXEJnVarGt7edP2HayYr3JF1LvngK5Pp+plWXDe4n59PdI2o9IhnELcFMZSvpO4j5Ti76er0z6eE/J9sOseNhLH7TtaO+xO3HPOolYA3rQSP7gVDXGomdP0hzmDuMcxq6frvUbRAadic74XqJnr9ZCjCsQmRyfAfyJKN9twMen2t07SiQtCfwHcQO+t7x+SCTlqLpwtqRVicQ9m0n6EREs3mJ7vfL7ebX9o49IOpsYVrEDcGsZNvIN2y/tQGvYP+4hblhd+cdCRGa4TYjJ5n8lso19zvYvKmtllmsF+hk7ViCpXJIuIBahn1hB/H/ATravr6h1PDEsauI95TXAJrb/XFEr0+cztVJsWB4sP5+4hmcT5Xoc4ZMbAifYrlYpHeH5WoR4oNeJViZ9vKeMwA9T4mGmv2ehmP5yBpH187VEcp2dgTcSDxwgso++bEo649DYezAkfcL2myrtq3fOmI2kWYNuf0mPB253rB9XU+NxxJOTLYng9z/E064PAO8ghnQebnvVmrp9QtKjgD2JYRpbKCZOXwl8GHgzkXl0tu3/Ht1RTi9Kg+Uf87K6mgPWmBqZFcSityP/XMn+ehdzVCQtQyxqfZ+kLYiej/MmPrWfbmTacBL9hYnlfC6ovN+081Vi/HrMjVE30GGClkZ9uvDDrHhY6tcrEmvfQfjibbb/r5bGKFAkOjyb6ChamWjorUGsxfxjSZrqNTYWwzgfAtUq9LbvLT0dXx7uxZO0EdAae/NB0mxinPISkm4gxn9vSizifqztE2pp2f4D8CpJqxANvD8QGfz+i0hZDJHNqjE5SxHpsBeGWNBd0v3AXUSvyl1Ez2zjQdADkwTcSiQXWVNSJ4mJGlOj9AT9a2Lj/AfEfOKBVifXlaR3E2txzZZ0HtEwWhvYi+gFm86k2BCiUmp74v7vJnpZauqknS9JexH5CIaTY2wFHCNp2ibH6DNZfjiIhzX3ORFF4sMLgJ8DSxND82cDS0m63B0knEnkNuKBzeslHU2U74nAMyWtD3yBWM/4EdN69qg7XE/SsUTK+8cQTzb+1fbttYcESjqOf26sDzKM7l1LZxLt1YGfFr1VbP+o0n43Abaw/W5JryYquS8r3dwXzGsuZAXNI4gnRZ+0fW7Ztj9wUpc9sV3ZcBRa5eHGF4jG8YwyjPNU2y+pqVO0TiEWpIfi78z1+9pDsi8kKk9/SdDKTBIwktiR4Idp5ZqscU53CVpWIibwDyc/6CJBy3dtry1pWWJI+8GlB/9m20vW0ilamddXmg2L3kW2N1IsgXOy7e0Uk3JOt711RZ3M8zWS5BgJcaOX95Sil+KHGUjaHNjQ9n9K2hZ4he09y28X2N64Y/3O/LA8NNzC9qfKA5zVhn4+i5h3fvg8Gu4PmdazV5+n2X4RgKSdgXMldVGB+iJwCDHGN7vFfi3hjCLWK5pZab83AWsrJs2fBFxStq9A/SeiyxCNk6WIdO1/l7QeMfzgJuCbkl5p+7qaukN0ZcNRaIlYwPp/gZMr73si7wSOJCrUVTKJzYdXAJ8Bdrb9l461MpMEjCp2dO2HmeV6N/1M0HKrpOcRa9I9uWx7HJHcoTaZ11eKDUvvwz1E0qpZRA/iQkOfa/tl5vkaVXKMruNG7+4p2X6Y1GD+IXCIpC8Qc9wuLtobEWXqmi79cGFgP0XynO2AlxWdrxIPe6f8MKr17AGquByDIhnMG2z/tHxfiUj9vbynmDp1HlrrA7/IntejWHx0kKnySbarZbqT9EIiG+ZxQ9tOAf7T9lUVdZYgGnuvIIbXfhV4HnOzSS5GjAU/rJbmBP3ObJitJek029uWJ4bnOhLedLL0QtFbCfiL7S4qNBO1UhazVmJioqKXHjsyfD6rXOpvgpYVgf2IxsKZxPzlFYBDbZ9eS2dIL+v6ykrQcjbwd2KB6SuICtt6Q59n2t6mhlbRSztf+ud8BLcTc4w6zUeQFDd6dU8ZgR8+g4QGc5l286zhkS6SPg4c0WUdquh0We99BjFP72tEcpY9iB69m4lG5f4eWlLoEWmMc2NP0g62T5H0eNs3V9rn8kRj76ChbUsT6528o4bG0H4XJxYCv29o2yqe/pNVU8sl6bnAsp6m64stKJTG3ja2T0vSW5qo2PzMHSWqsP3H8nkNYBXg2g79cDawiMtiql3SYseUdbIb54PkIoOkX98FTunI79cAbvGEOee2L5rPvz0Snezrq3MbFv9bk1jMeqsSE8+wvVX5/Vs1K9llnynnq+z3qcAStq+pve9R0jefH5EfpjSYM/09C0mLAI+3fUP5vjrw6JodHNge2xdwRcf7Xxp4DrB4B/s+hOhW/jFwMPGkBiILV1flWXmS7U+czuXKfGXYcBRaifY7u7zvW/zka8SE7R070DqvvL8fOI9I3nMN8KYOtHYh5n99n3iit2GHNky9xrL8cATlWnygMbRtlQ50lhn6/Cxgxy50yv6PJZJkXUb0Ui7WlQ2Tr68UGwLLEQm/TgNOJ7I971F+mzGIX9P0fB1ATK34BnA18KoufHBILytuDGx4eV98PtsPy37XAJ4wYdtG0/VcDWn2oh418gMYaeE7aOyRVBkFzi/vs4hEAXPKBd5FgHpdeb+gvL+F6HJ+OZGM5qLpWK7MV7IN07RGYMfBzfIqYOHy+fHAVR1qfYe5oyAWAb7fgdYlQ+XZD/g/Yh7Rih1onV/eO73Gsv0wOSYONywPIhITdVLpGPLD9wHn0m2j6JyhzzsTlapndlyujOsr04bLAZ8v1/FTJvz2rGl8vi4a+vyqErMuBp5fWSc7bvTV5zP9MKURlnyuelWPGosELZI2nNdmYl5WbQaTNvcG1rF9l2KtuG9RN3nFQkNDAo4sc0hOJXoTa/NqSScQKXsB3kCMz76dSB7x1opameXKJNOGmVrZLC9pK2I+wiDj4e1EL0ttVpH0BmKy+SLA34hJ6At3oHU3c2PH74F/IebhfIJIrV6TrGss2w8zY8dmttcoCQ/eSiTienUHOsNsDTzX9v1l2M+lhH/UZKakp9v+qe0TJV1JmXNeWQdyr68BndmwJMU4jijP4sQSCGvHCDogelRmAzX9JPN83SnpibZ/Q1xThwA/IRrQl8z3Px8e2XGjVz4/Ij/MSkyYea56VY8ai8Ye8PpJtl/WgVZWZXQ/Isi+CcD25ZJeTjdZsb5LBHeX778lsiH9DVjPdeeoZJYrk0wbZmplsycx6fzXwBYlIdIconelNuuX13nAupK+DXyZeLpXm/cD35b0V+DPwA6O9P1dpMfOusay/TAzdmQ2LIcriI+m20bR7kSl5iAA29dLejFwYAdamddXhg3vIIYP30mM7PkdcQ3cUH5XZT3IPV//Dny1zJW+BPiEo8tjz8o62XGjbz4/Cj/MaoRlnqt+1aNG3bU4ihcxzGdz4MgO9v18osV/IrHg6GwiA9Irk8t4aMV97U90l/+BmE90FhFMrgI+ThnCNN3KlXw+0my4IJ2vEdg5zT+Iyk7N/c0AllwAylVFa0Hzw8oxca2J559IFvSVDo77icQcsyOAjcs9ZQ6wcab9yrFU9fksrWwbAhsQjaBO57X18XwtgHFj2tlwaH8pfkg06t43YdvSxNpw0/JcLWh+ONVXxtoUCwSSniZpP0nfJFrouxPZ06pi+xLbH7K9s+0zbd9t+7m2v1qO49DampOwccV93Qa8Dfie7S2J4WZHABsSCSXeWVHrwahZrkwybbggna9sMv1j1Zo7s32/J08Bn1muWloLmh9Ws6Ht79t+04RtN9reBerGedu/sX2y7QNtX1DuKZvavqBo1R7KOT+q+nyWVpYNSz3jKcBviN6bSyQ9Zej16Bo6D4PpeL4WtLgx7WyY7Ye2f+mhDPRl220uGegTY1TNc7Wg+eGUGIthnJKuB54EfIzo7v2o7T1GdDhZlTY9+J88ZP5KpKueNbTt68BCtreQdI6ko9z9gqRQt1wP3HGku/1p0VjF9o8q7j7ThiM7Xx3b8CEdQrJeFpnlqqW1IMUNyLXhtH3oMKbUsuEhxPC5iYjoTdyUSO7QmJwFLW5MRxY0P5yOMapX9aixaOwRwze2JtLPfgFYRtL2RJadzte0mkBWhcMP/icPmXuJybz3SNqPGGN+C3CTpJnEE4775vP/NalZrolcC6xGnKNrmJswowaZNhzl+erShg+FLv1jlGSWq5bWghQ3INeGfX3o0JgPtncvCSruHdo8CzjJ9t2SPipplmM+bmPeLGhxY9rR/LAKvapHjUVjz/bVxLowR0haFNiMmE93BGHQ1MNJ0qlZ2fgOMaH3HuKp0KLA04HtiS7tE2xfWVFvfnRZiVqRSPwBsFLlfWfacJTnq0sbPhSmYw9YX7UWpLgBuTbs60OH6eiHaZRMiKsCN5VNixMJHQCwvV/2IU1DrXGOG1W0FkA/zKIv9d769ahRTxrMegE7UNaDAXYFtqGsc5J8HHMq7WfZSbZvVN7XTCrPwlSc5L6glCvZJ6racEHR6uj4U/1jXnFj6LfHT9dyPcixdK7VhR8CTx11uYa05kxHLWD9B/m9ms+X/aVcX1k2JNLcH1Q+r0os7bAEkWZ/EWCJDo49K0al+sYkGl3EjbRyZWmNwg8f5HjmTCf7PYTjmHb1qLFI0FLWytiAuU82bicaeyd0oLXsJNs3Kh/3ryT1laF9nzi0/b3wj97MqkiaV0/w3cRTj1qMolwrT7L9iR1oZdhwFFpZNkzzj8nihqTPFq2ba2kxAr+fjNpaiX4433he2Tey4vxgvztIen75vKukbYZ+3qWi1Afm92NNn0++vrJseB+wtaSPEAu3v5HIzP2V8n7ifP73YZNswzTfgNS4kVmuLK1UP4S06yvVB6E/9aixGMYJrGx7r8EX218Hvi7pog60vkIME0XSibZ3LtvfSyzEW6vCMdxdPc+KRwfMATZSLCR8su3tyvZ/A86upJFWLkmvs3088GlgY0lvIbrsbyGWy/gisNF8dvFIyLBhmtYIbJjp95PFjQs70Mr0+08xyTBD2/t0IJnl86tJOm5eP3RQrqw4P6jQ38zcBwKDCv3OtveoXMFZS9JZEw8BsCMjXU3Srq8MG0p6LJEA7vPAksC6tn8AvHiq+54PmTEq0zcgL25klqtzrVH4YWKMyvZB6Ek9alwaez8uzngacCuwGLAF8MsOtLIqbUtKeh6xNtcSQ5+XrC1Uxn/fA9xRHH4Gsajw4HPN+Slp5QJeXfxikE3pDcCRRKA6glgvsQqZNkw+X2k2LGT6x2Rx41cdaGWW6wsd7POfSPZDiMrGFyvvczL6+tDhJ8DrO9jvvMi8vjJseCvwOeCpwHbAmZJ2JRa2/jMxB+go23+pqJlpwxTfGEHcyPT5DK1R+GFWjEo7V32rR41LY+9NwM6E4z8e+AtwCfD2DrSyKm1XA4On1T+Y8Lk2JwN/B9YEvkZUdNYa+lzT6TPL9V1i4c/B8f8WOIMYErOe7e9U1Mq0YaZWpg0h1z8y40ZauVzWFksg0w8BvpNYtr4+dDjH9k0P/mdVyLy+Oreh7fsl/Q5YHTieyN53vu0NIYa2ARdIWs/2vfPZ1cMh04ZZvpEdNzJ9vnOtEflhVozKPFe9qkepTDZsVKI4/DwZfvJRQWd925fX2t+DaC1OOPzBtreSJOAM21uV379le5v57uSha2WWa3/gVUS2o++VzRcRE94vB/azfX8lrUwbZmql2bDoZfrHIsBrgDuAL9vuLN13ZrmK3mOIuT5LETfnb3vyBd0fqUaaHw5pdl6uopMS54vWDKJCvxUPrNAfZ3tea2lNRWtRIt343+nY5+dzDDvYPqXyPlNsKGkpYBnbPy/ft7Z9xtDvT7L960l38PD1drJ9Uq39LQha2XEj0+cTbZjth1nXV+a56lU9qjX2KpNVaZN0nu3NutYpWssB/wI8m3h6/SFgOdufLRf5mba3qKSVWa49gOuJi3lLSecS49oF7AE8zvb7K2ll2jBTK82GRS/TP75OjJdfGni07X071Mos10uAzxI3kVuBxwDPAXaxfX5FnTQ/LHop5SpaqY3zSY6hi0ZRms/P5xiusP3cyvvMfpjyXtuHJuj8I25IOsj2+6a71gjixkjifNfnq2hk+WHKg9Hkc9WrelRr7FUmq9Im6VZi7PUDNtPRRNXi+EcSFalv2P7F0G/Psn1NJZ20cknaiQhOB9retFxgdwML2d5C0jlEGuu757ujh66XYsNMrRHYMNM/LrT9wvL5Atsb19z/BK3Mcl0O7Gz7xqFtTwG+aLtqQqJkn88sV1rjfD7H0EWjKM3n53MMXZQr6758KTH0ah0eeD2LqDCeZPtjFfXm2N60fO60jMlamXEjM86n2HAEfpjSCMuOT32qR43LnL15IunNtj9eebdZ2YIyJ0sfR4wlXpxYv2Xt6NEGInDMJrrWa5A5Wfpe4rjvkbQfMbb9FuAmSTOBdxIpjKdEpg1HcL5SbDhEpn8sppiLpfJ5w8EPti+trJVZrvuBu/TAdM73AjNrCYzADyGhXEOMIitcBmk+P7zv4c3EfJ/apJwvz50XdWV5Qv8k4Am2r1KkcL8UqFbJ5oFzR5fqOEZ1rjWiuJEZ51PO1wj8cOlBz5OkLudNp5yrPtajxrqxB/y4g31mVdqyJqreARwM3Elkc/odMZn0hvK7iAUma5E5Afc7xLHfQ1y4iwJPB7YHNgROsH1lBZ1MG2afrywbDsj0j4lJUwbXtYmbZU0yy3Unc7NWasL2WmT7IeSUa0BmVrjMRlGmz09mvy6GW2Y9HF3W9u8J/4fIpHcycJXteyVtUFly+HxdTbfnK0NrFHEj0+dTztcI/DCrwZx1rnpXjxqbYZySVgX+bvsXimxEixPDe/5aWec/bR9cc58LCiVArAbcZfvLoz6eLpG0MLCBK2f3y7ThqM9XVzZsTA3FJPddiRvaV1wvI9tkeil+mFmuzDivxGQwfSXrfEk6lais/YaogA4eOpjSG2C7Zq9Ubxn1/Ws6k+2H84lRtr13LZ1RMGo/rFWPGovGnqQPA6sSabF/SfRo/oXo1u5ywdPeIun1tj816uOogaSFJlYMFf31L7Jde6HzYY00G3atNSobNh4+ZX7F5UQCky7nVzyNuesGzYs/2P57Rb2UcjUa80ORCXEP4LXA4cD5RGVbwMIuGRIb8yY7bvSV5of1mc71qHEZxrmW7U3K2NefAU+zfZ+kb4/6wKYDkjbngWuKCNhJ0q+Au4inRGfM85+nB3OAjRSLZZ5se7uy/d+AKg2VTBuO6Hx1bsNGNZa2fRh0Pr/iEOY9hFLEU+dNgadU1MsqV6MxTyTtC7wQOIVIpX4QsSDydbZ3G+WxTSOy40bvaH44dfpWjxqXxt6sklVHxGKFy5bWcrX1vxYUOko68xwiycFs4ombgduAXYDrgFnEApCd0UW5yiTce4A7ysU1A1ho6HPNbu9MG6ZpJdtwfsfRhd/3VStlfoXt3SXtTEw+HzCLyAR3t6SPSppl+55KkpmJFsaKHvh8FosBHybW53o/8Gnb35B0jKRlbP8x4yCm8/kaQdyYJ9PZhiwgfpjFdK/3ZtSjxqWxdzdzJ+7fBXxp6HMKiYGjetIZ20dL2oKYDLsH8HngBKKH9JjaepPQRTKdk4nFOdcEvkZUEtca+lytoZJpw+TzlWbDB6EL/+irVsok93IDWxUYJJ5ZnEgHHmL2frW0CpmJFubJNK8gzo/p7vPzpCMb/hdz/fwtJbuegBMlzXDOkh3T9nyNIG5MxrS1YWHkftjqvQ+ZzutR49LY2wJ4ETHBcg6AYlHElyUeQ3VnnCzpTAc6CxNpYfcCPgN8jsgetFNtraKXUi7i+NckFrJ8aentPcP2S8txfKuWUKYNk89Xmg0HJPpHL7USk3o8HbjfsQjtqsSNcmviieVCxBpCf6kltoAkK5nuFcRe+vx8qG3Do2wfMdmPZSpJVXp4vlLjBvTShul+OAmt3vvQ6LweNS6NvS8STzgWk7Qj8HPgdcC5wP/UFstwRg0lnZE0nHRme6B20pmZwDVET+hJwOnEpN/q/pNcrsWAbYF7JZ0OfIjS61seBsyqqJVmw2StTBum+kdftRK5D9ha0rLASsAbgROJ4Soiyjhdy9bHCmKvfT7DhrYnnRoi6QlEVr/za+n19Hylxo0+2jDbD8t+W733kdN5PWpcGnvL296wtJZvAD4ObGT7T7WFEp0xM+nMncD1wAHA5kRW05tt7wHhjPMLLg+TtHLZ/q2kjwBHEln8rrN9VvntfkkHVJTLtGGaVrINIdfv+6rVOZIeCxxIDH1ZEljX9g+Yxo27YfpYQSz00uezbChpF+Bi27+S9DPgQmKJp3OBQ4m1us6vpUfPzteI4kavbAj5ftjqvVMjox41Lo29Rykm7s8AbgUuBlaX1MXE/SxnzEw6cwbh+ALWJ4bFXi1pr7JtFjHMogYp5VLMCziOGAu9OLA2sHZIAWUtGqIbvwaZNkzRGoENIdfv+6o1T1R3fsWtxLCXpwLbAWeWp737An8mhsMcVXs41ryoXK4BvasgFvrq81k2PBq4UNLjiDln7wTeKuljwIWun7a9b+drFHGjbzaEfD9s9d5HSFY9alwae1czd7L+1cQQzsGkx9qNvSxnzEw6syOR2ekq4FHA24D3AFcAh9tVF2vMKtcdwMHExbwv8DviadcN5XcBC1fUy7Rhlla2DSHX7/uqNRnV5leUp5G/A1YHjge+DJxve0OAUoG7QNJ67nhRd7qZ29bHCiL01+ezbHiDy2LVkh4FbAxsSJTtRZKWqNxQ6dX5GlHc6JUNC9l+2Oq9j5yUetS4LKo+E3glsB6wBNG9fDnwPxWHzg205jA3c46GfnLN7EeKicrzTDpju+o8xDK0YmXbl0vaxfZXyvbXAl8F7nWlRU4zyzWkuQExhv0u21/uSCPThmlaQ5qd27DoZPp9L7XKvuc5v8L2XytqLAUs47J4r6StPbQukaQn2f51Lb2yz87LVXRS4vwItHrp84n35ZuA/wc8BngJ0VO1v+1LJG1DLI5cbWh7H89XdtzoqQ2z/bDVe+todlaPGpfG3glEy/xiohW9KLAR8Dfbe1fWyrqYT6QknSGeBPwj6Yzt/SvqzADOtr25pP2JxjLAL4mnKicRwyrOr6SXUq756L++9hCHTBtmn69JjqG6DYf2neYfPdb6x/wKwi8G8yueYLuLxBjvtX1o7f3OQyetXH2sIJb99tXnO7ehYk2s04ghcwsBSwMrEnWN5Yiegd/b/mUNvaLZy/NV9LLiRq9sOCI/bPXeytSuR43LMM6Vbb9wwraPSrq4A62szJ8pSWfKsIr7ytdXAmcCfwVeRSx6enxlh89MprM5D1y/RMBOkn5FDAuYPfxE8ZGSacPs85VlwyHS/KPHWllJAi4lYuE6ijnT//iJmIdwku2PVZTMnNuWmeE5U6uvPt+5DW3fI+kMYG8eOHztVmLdx8OATxOZJWvRu/M1grjRKxuOyA9bvXcKZNSjxqWxd4ukw4mMRIOnApsAv+9AKytwZCadGXAX8D3gj0QgEbC4pA1sX1ZJI7NczyHS684mxoIbuA3YBbiOmIBbs6ECOTbM1Mq2YaZ/9FUrZX6F586zudL2lpKeRPSyXVWeBF8K1Ky0Zc5t61UFcYi++nyWDbfmgTkBRMw7ezcx/2eTynq9O18jiBu9syH5ftjqvVOj83rUuDT2dgPeQiRpWZy5c/a6GCKQ5YyZSWceLekyYnjUgBnE0NiZwBeAp1XSSiuX7aMlbVH09iDSPZ9A9AgcU1OLXBumaSXbEHL9vq9aKZPcJS1r+/fE0HmAI4CTgau0jkOXAAARxklEQVRs36uYn1CTzMn7fawgQn99PsuGIpI4DH9fkVg36yuVRzlAD8/XCOJG72xIvh+2eu8UyKhHjcucvTcRDn7bhO3VU3Ir5gcOT1QdPFWxK84PVG7SmbPKE7aLgM8STxzeSKwJ8htgCdtVhkoll2th4FhgP2JYwxeL1mG2X1tZK9OGmVppNix6mf7RV62s+RWnEk8qf8PcOEj5PIMYmlJtWY6scpX9psT5EWj11eez7suPJXz7vgk/zQJut317La2i17vzNYK40UcbZvthq/dOTavzetS49OwdCOwh6QvAx4ec4uVEd3NNXsckzlhZ53j+OenMTsBWRFdzF1wGPJe4iM8mxmV/BnhzRY3Mcs0EriGe/J8EnA68lm6viwwbZmpl2zDTP/qqlTK/wvZLFJn19iB84nBiIV+VV+1lOTLntmXF+Wytvvp8ig1t3zK/3yWtYPvGipK9O18jiBt9tGG2H7Z679TovB41Lj17c4AtgbcSa2ccavssSee5furqlMyfki70PyedQdLFtl9QS6fs80fEOO/BE7Z7iPHLPyLKuIbtMytpZZZrBvBS4OnA5sDXgD/YPnnwe62nRck2zNRKs2HZX6Z/9FXr0nnMrziu9vwKSfsCLwROIRIDHEQMe7nO9m41tYpeSrmKVmaG50ytvvp8mg2L3j62j5uwbSZwnu2NK+r07nyNIG70zoZD+83yw1bvnZpW5/WocenZw/Y9wJGSPgscJmk/YNkOpLIyf2YmnTmaBw4HWAhYA9iVcM4vEdmKapBZrjOIhSwFrA9sAVwtaa+ybRYx0bkGmTbM1Mq0IeT6R1+1suZXLEbcLNcE3g982vY3JB0jaRnbf6yoBblz2zIzPGdq9dXnM20IkSfguFKxPtX2No7MsHdX1unj+cqOG3204YAsP2z13qnReT1qXHr2trH9rQnb1gHeYHufylonAT/ln51xZds7VdRZlEg6sz4PTDrz37bvmN//1qQcxwttn15xfynlKlofBq4CXkasP/Me4ArgcCddHLVtmKmVbcMR+EcftbLmVxwIbE/EwQEDLQEzao6sSJ7blhLnR6DVV59Ps2HRm2N703l8Psv2lhV1ene+RhA3emfDIb0sP2z13qnvr9t6lO2xegEHdbz/RYF3ENmjziHG3x4ILFJZ503A0vPY/uZR23i6lAt4LLB++bzL0PbXEoHk0aO2x4L+yrZhsn/0VWsmsV7QB4k5EB8EdiYqUTV15rs/YOZ0LFfRSonzI9Dqq89n3Zf3BnYnhnrtTsw7G/581jS2YYrWCOJGH22Y7Yet3ju1cnVejxqLnr1hupinN2H/KZk/Jd0I/I5I//qPpDNdl69rsspVxkifbXtzSfsTk4oBfkl0z58EHOW6C8b3ilHYMNPve6yVOn9pkmN4ArBaZd/InNuWmeE5U+tG+unzWffltxFze/YD/pvoiRr+vK3r9qjcSA/P13yOoYu4cSM9s+EI/LDVex8hWfWoGVM6ysa8OBA4XdJ+5SQOeHllnRuIiswiwCWSql24IyalXCVIDMZjv5IIgLcTPQOvBI5vDb35MyIbZvp9X7VWtv0q2x+zfYLtj9remZiHUA1Ju0h6cvn8M0mflrR5+flQYJWaeiSVq5AV57O1+urzKTa0fbRjXaxf2f5I+fzLoc+16d35GkHc6J0NR+CHrd77CMmqR41jY08P/idTIs0Zbd9j+0hgB2BnSd+gm6QzqYygXHcB3yPGfj+R8JHFVX/x1j6TZsNM/+ip1i2SDpe0jaSNJW0r6SjqT3I/mkiKdTZwE/BOYAtJ1xFDsT5VWS+rXNDDCuKAnvp8VkNlB0mHEXOWBk/tH9WF1oAenq/suNE7G47AD1u9tw6d1aPGprGnSMgC8H+SdpP0ekmdOH+SMx41pHezY+HF9wK1s85lk1muR0u6DHjC0LZBUFyUGCrQmD/ZNsz0j75q7Qb8CXg9cDAxL+AW4DWVdW6w/WrbWwDbAmsBGxJDU1aTtMR8//vhk1UuoH8VxEJffT7LhpcQywX8VtJpwNrAC+AfFe7ZlfX6eL6y40YfbZjth63eOzW6r0d5AZic2PUL+Byx3hLAMUTQeBdwcgda28xj2zoD/Y7K12nSmRGet66T6ZxV3i8iFgV9GbFo5hbAM4HnjdoGC/prlDbM9Ps+aZGXJOAm4BAiy9jPgSuB55fftgE+OB3LNTj+eWzrJM6P4p5SNPrk86O4Lx9CrBe37rDmdLVhllZ23OipDRca+rw20eu2MPD+sq2qH7Z675TL0nk9alx69pa3vY+kpxHpYHe1fRiwZG0hDy3xIOmgsu0qV17iYQLTcmLqQyCrXJcBzyXWMTmbuMF8Avhrkn4fGIUNM/2+T1qdz6+QNAv4CXAa8GVgX+DTwL6S5gA3Ax+qpVdIm9uWGedHdE+BHvl8pg1LkgWInpRLgMOHjuOq2npDTPvzNaK4MUwfbLgQcHr5vAIx2uHXwPLAxpJWAq6vqdnqvdXorB41Lo2920p2os8C7wMWlbR7gm4fnbFPPFnSPsDPiPVNvk3caAYp3J80wmObLjQbTj86n19h+x5iodi9iWGU2wKrE4udnwkcRgzNqsmoJu9P+wrimNG1Dbco70sQle61JJ0l6UJJ7+hYe1ozorjRK2zfS2TiBDiFGOZ4CZHcZiXgP8r3rmgx6uHTeT1qXBp7ryFaxh+w/T/EuNjVgV1HelT16DrpzKjoulxHExNi7ywvAWsA7yeeLK7ZsX4fGKUNM/2+V1rOmV+xNXAE4SNHlfe1iSeV2wN/rqyXVa5xoVc+n4Gk9wIrSzoEmO1Ib39led+MeBjRmXyH+87USo8bQ/TFhgNus70bcF15/6Ht1wAfSdDuml7EjELn9aiFprqD6YDtO4BPDn3/GbEAZNd06oyS1inDQv5P0m7EZM7P276zS92uySqX7U/P5xgWJeZbNObDKGyY6fc91XrAJHfgtSWB1Rsq6wh4z4TvKxLDsL5i+4zKelnlmkivKog99fkHyHa47/OJnr1zgcFyAUh6AbCq7W1rC/bwfGXHjT7a8Cmlp2i5Ce8GsH1sRa2JtHrvwySjHjUuPXupZGT+lPQ55lZi/g68GHgcMc592rKglMv232yfnqnZN7qwYaZ/9FUrcX7Fq4iHam8vr7cRTyvfRQfZ07LnjWRmeM7S6qvPF73ObWh7DnCn7UtCUiKGYu1OBz7f0/OVGjd6asP7iZ4iT3jvjFbv7YZa9aix6NnLpDjjncA+zHXGawln3LGi1PK2Nx1KOrOWbUs6r6LGKOhruRp1yPSPvmoNsxkxj7k6tm+Z3++SVrB9YxfadFguSI3zqVr01OezbChpVWBPSTsBc4gH6mfZPrqWxgR6d75GEDd6Z0NiMfXPStpjwnsnU5davXfBpzX26pPljIOkMzsyN+nMTpU1RkFfy9WoQ6Z/9FUrFUn72D5uwraZRMKsjUdzVFOmjxVE6K/PZ9nwACKxwk+BLYFVACR9iWj4zbZds4x9PV+ZcaO3NgQeI+nTwDPK++rlHdt7V9Rp9d4FnDaMsz5ZmT/7mnSmr+Vq1CHTP/qqNUzGfLPdICpqkr4FYPs+4O4ONbsuV2aG50ytvvp8ig1tv4FYBHldItHIYsDFwFuIZQT2rSzZ1/MFeXGjVzaUNBt4dPn6auBIogF2FPALIvnNx2rpFVq9dwFHjoX8GpWQtAgRpH5t+5vlScfrgGNs/3a0R9doNBpzJ7lLOo5YyLXLhARzbG86j89nObIU1tRKKVdmnG/3lKmTbUNJa9q+uvRE7WX7+NoafSczbvQNSY+aGPMkLQy83Xb14e0tRi34tMZeo9FojBGD+RW295F0DDHB/VpgPds15y/tDdxLJFs4nOhtO3Do8641K21Z5Wo0Gt2RHTcajXGgzdlrNBqN8SJrfsVjiMV9ZwFLERW14c+1aZP3G43pT3bcaDR6T2vsNRqNxniRMsl9kIFQ0g62P1I+bz/0ufaaY23yfqMxzRlB3Gg0ek9L0NJoNBrjRcokd0k7SDqMSFKBpBnEHLquaJP3G41pzgjiRqPRe9qcvUaj0WhUR9LjgM2JjHAzgUOB79q+v1TgzrO9yQgPsdFoLGC0uNFo1Kc19hqNRqNRHUkL2b63fF6bSEl/BXCI7XcPMmeO9CAbjcYCi6RDgPOBO2x/p2xrcaPReJi0YZyNRqPRqIqkhYDTy+cVgD8BvwaWBzaWtBJw/aiOr9FoLLhI2r98fAFwCZGJE4DW0Gs0Hj6tsddoNBqNqpQevXvK11OA9xKVtkOBlYD/KN8bjUZjIluU9yWIh0ZrSTpL0oWS3jHC42o0piWtsddoNBqNLrnN9m7AdeX9h7ZfA3xkxMfVaDQWMCS9F1i5DOGcXdbUu7K8bwZsNNIDbDSmIa2x12g0Go0ueIqkfYDlJrwbwPaxIz26RqOxIHI+cCtwLpFdFwBJLwD2sN2WXmg0HiatsddoNBqNLrgfuIto3A2/NxqNxjyxPQe40/YlgCSJyMq5O3DpSA+u0ZimtMZeo9FoNLrgV7Y/C/x2wnuj0WjME0mrAntK2gmYQ9RTz7K9j+0fj/boGo3pyUKjPoBGo9Fo9JrHSPo08Izyvnp5x/beoz20RqOxgHEA8BPgp8CWwCoAkr5ENPxm295pdIfXaEw/2jp7jUaj0aiKpNnAmbY3lbQ6MaTTRGXt/wF7AYu1NOqNRmMikg4mhm5+CPg8cAZwYvl5tu3fjurYGo3pSGvsNRqNRqM6kh5l+84J2xYG3m77fSM6rEajMQ2QtKbtqyXNBPayffyoj6nRmK60xl6j0Wg0Go1Go9Fo9JCWoKXRaDQajUaj0Wg0ekhr7DUajUajUQFJy0h6yPdVSUuU1PKNRqPRaHRCa+w1Go1GYyyRdKakRSTNUHCWpJllnhBl29clPbkknRn+34UGfzfEF4B1JtGaLWk1STtLOlHS8sBhwNZdlK3RaDQaDWhLLzQajUZjzJD0NODVwD2275D0YuDtwLOAM4GZkrYC3gV8D3g0MEfSPcC6wHeIbIFHAqeWfe4KLA98oHTWzQKeAaxh+/fAssBuwDbAK4BfARsBN5a1xQD+1/avOi5+o9FoNMaI1thrNBqNxrjxbOBFwJMlfQL4F9unS/qm7e0AJG0PrA58Arjf9vPL9u/b3mR4Z5JeAuwNfBL4ku0/SjoGOLI09AB+AxwCrAlcD6wFXAdcXH7/FNAWnW80Go1GVdowzkaj0WiMGxsCbwR+ZPtNwPslnQcsIulnkq4Eng68GfgwYEnPG95BGe6pMufumcBOwDXAaZKOBX5u+7Shf3kxcGl5vxI4FDgO2BS4D7jQ9m3dFbnRaDQa40jr2Ws0Go3GuHEE8EcASa8EDrZ9V/n+HuA04LvAl4GLbF8v6SSiNw5J5xD3z7fYvgY4vGy/DbgTOM/2V4cFbZ9W5umtBuwLfB9YhhjKaeDfuyxwo9FoNMaTts5eo9FoNMYKSc8EXksMvTwUWBjYlmh0rUA0BI8jGmJ/sr2fpMtsb1CGca41tK+lgS2BPYjewBuHpJYGLrB9QPnb04rWLcDpxPy/PxLzAv8FeJHbTbnRaDQaFWk9e41Go9EYN2YAXweebvuYkmlTto8oPXvfJIZkXgXs+SD7WhqYDRwLrG37PYMfJG1CybYpaWfgCmA9IjnM14EDgVcCvwZ+AuwInFSjgI1Go9FoQGvsNRqNRmPMKEMvkfT28v1uSU+QtOjQ39xV5uNp4rIL5X9nAjNsXw9cL+kFwO7lfcDSwNnl81VEA+9/ieyev7T9o6JhYmjps2qXtdFoNBrjTUvQ0mg0Go1xZZakhQFsvxV4DdETN1j+YGFgcWI5htvLXL1byvvZwNuG9rUw8DnbLxq8gH8r27H9M9t3Akva/pvtN0vaA9ge+IXtm2x/s/MSNxqNRmOsaHP2Go1Go9EguvAe6Zw5STOInr57H8b/LPRw/r7RaDQajYdLa+w1Go1Go9FoNBqNRg9pwzgbjUaj0Wg0Go1Go4e0xl6j0Wg0Go1Go9Fo9JDW2Gs0Go1Go9FoNBqNHtIae41Go9FoNBqNRqPRQ1pjr9FoNBqNRqPRaDR6yP8H8W71dT1cJZAAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1080x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(15, 8))\n",
    "#sns.bar(feature_important.index, feature_important.data)\n",
    "plt.title(\"极端梯度提升树XGBoost回归模型重要参数选择指数\")\n",
    "sns.barplot(x='特征名称',y='重要指数',color=\"salmon\",data=feature_important_df)\n",
    "plt.xticks(rotation=90)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [],
   "source": [
    "feature_important_df.to_excel(\"极端梯度提升树XGBoost回归模型重要参数选择指数.xlsx\", index=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# AdaBoost回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.042244492315692085 0.20553464991502549 0.15378136116509966 0.03352903168810417\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>特征名称</th>\n",
       "      <th>重要指数</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>S-ZORB.TE_5202.PV</td>\n",
       "      <td>0.487598</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>原料性质：辛烷值</td>\n",
       "      <td>0.331906</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>S-ZORB.TE_5102.PV</td>\n",
       "      <td>0.253407</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>S-ZORB.LC_5101.PV</td>\n",
       "      <td>0.152286</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>原料性质：烯烃</td>\n",
       "      <td>0.151244</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>S-ZORB.CAL_H2.PV</td>\n",
       "      <td>0.150173</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>S-ZORB.FT_9001.PV</td>\n",
       "      <td>0.094015</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>原料性质：饱和烃</td>\n",
       "      <td>0.068202</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>原料性质：密度</td>\n",
       "      <td>0.054284</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>原料性质：溴值</td>\n",
       "      <td>0.040901</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>再生吸附剂性质：焦炭</td>\n",
       "      <td>0.034540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>S-ZORB.TE_9001.PV</td>\n",
       "      <td>0.032275</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>S-ZORB.PC_5101.PV</td>\n",
       "      <td>0.025973</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>再生吸附剂性质：S</td>\n",
       "      <td>0.023200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>S-ZORB.LC_5001.PV</td>\n",
       "      <td>0.006834</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>S-ZORB.TE_2005.PV</td>\n",
       "      <td>0.005834</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>原料性质：硫含量</td>\n",
       "      <td>0.004876</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>S-ZORB.PT_2101.PV</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>S-ZORB.PDT_2104.PV</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>S-ZORB.TE_2301.PV</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>S-ZORB.PT_2301.PV</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>S-ZORB.PC_2105.PV</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>S-ZORB.FC_2801.PV</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>S-ZORB.TC_5005.PV</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>S-ZORB.PT_2801.PV</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>S-ZORB.PDI_2102.PV</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>待生吸附剂性质：S</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>待生吸附剂性质：焦炭</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>S-ZORB.FT_5101.PV</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>原料性质：芳烃</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>S-ZORB.TE_2103.PV</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  特征名称      重要指数\n",
       "0    S-ZORB.TE_5202.PV  0.487598\n",
       "1             原料性质：辛烷值  0.331906\n",
       "2    S-ZORB.TE_5102.PV  0.253407\n",
       "3    S-ZORB.LC_5101.PV  0.152286\n",
       "4              原料性质：烯烃  0.151244\n",
       "5     S-ZORB.CAL_H2.PV  0.150173\n",
       "6    S-ZORB.FT_9001.PV  0.094015\n",
       "7             原料性质：饱和烃  0.068202\n",
       "8              原料性质：密度  0.054284\n",
       "9              原料性质：溴值  0.040901\n",
       "10          再生吸附剂性质：焦炭  0.034540\n",
       "11   S-ZORB.TE_9001.PV  0.032275\n",
       "12   S-ZORB.PC_5101.PV  0.025973\n",
       "13           再生吸附剂性质：S  0.023200\n",
       "14   S-ZORB.LC_5001.PV  0.006834\n",
       "15   S-ZORB.TE_2005.PV  0.005834\n",
       "16            原料性质：硫含量  0.004876\n",
       "17   S-ZORB.PT_2101.PV  0.000000\n",
       "18  S-ZORB.PDT_2104.PV  0.000000\n",
       "19   S-ZORB.TE_2301.PV  0.000000\n",
       "20   S-ZORB.PT_2301.PV  0.000000\n",
       "21   S-ZORB.PC_2105.PV  0.000000\n",
       "22   S-ZORB.FC_2801.PV  0.000000\n",
       "23   S-ZORB.TC_5005.PV  0.000000\n",
       "24   S-ZORB.PT_2801.PV  0.000000\n",
       "25  S-ZORB.PDI_2102.PV  0.000000\n",
       "26           待生吸附剂性质：S  0.000000\n",
       "27          待生吸附剂性质：焦炭  0.000000\n",
       "28   S-ZORB.FT_5101.PV  0.000000\n",
       "29             原料性质：芳烃  0.000000\n",
       "30   S-ZORB.TE_2103.PV  0.000000"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_AdaBR = AdaBoostRegressor(learning_rate=0.1, n_estimators=50, random_state=666)\n",
    "model_AdaBR.fit(x_train, y_train)\n",
    "y_predict = model_AdaBR.predict(x_test)\n",
    "model_fearture = model_AdaBR.feature_importances_\n",
    "mse_score = MSE(y_test, y_predict)\n",
    "rmse_score = np.sqrt(mse_score)\n",
    "mae_score = mean_absolute_error(y_test, y_predict)\n",
    "rr_score = r2_score(y_test, y_predict)\n",
    "print(mse_score, rmse_score, mae_score, rr_score)\n",
    "feature_important_df = pd.DataFrame()\n",
    "feature_important_df[\"特征名称\"] = x_train.columns[:31]\n",
    "feature_important_df[\"重要指数\"] = model_fearture[:31]*10\n",
    "feature_important_df = feature_important_df.sort_values(by=['重要指数'],axis = 0,ascending = False)\n",
    "feature_important_df = feature_important_df.reset_index(drop=True) \n",
    "feature_important_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3YAAAJICAYAAAAtqnbkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdeZhkZX238fs7jCCCC+qAYlQEcVdQEJcgDgRU1GhcMS6JUQNGTSJq3hBF44JLiJGoiQrGfY0xglFjJIooCbgMGBTjrmiCIhBQBBRZfu8fz2mm6emZRpmac57p+3NdfU111enu35yqU3W+59lSVUiSJEmS+rVi7AIkSZIkSdeOwU6SJEmSOmewkyRJkqTOGewkSZIkqXMGO0mSJEnqnMFOkiRJkjpnsJMkaWKSvD/JY8euQ5LUj5VjFyBJ0lKSvBf4YVU9b5HHzgRWV9WZ6/nZFwPPA34GXAq8uKrePqtaF/zt84EfbGCTWwG/X1UfSbIXsHtVHQP8AliR5Nu0uq8Ytl8JfKqqnjvLuiVJ/THYSZJ6sC9w9rX4+b+rqsOS3AL4ryQfrarzNlJtJNkd2Kmqjlvw0GVVtfsGfu7twGXDt78B7A0cA1wJXFxVt12w/ROBAzZW3ZKkzYddMSVJk5bkzrRWrxslucm1+V1VdRZwFrDLxqhtnt2B31nk/ssAkjw1yZp5X++ct83lw79XDl8AW9Na7RZTG6NgSdLmxWAnSZq63wJOBE4C9k2yIskbk/woyXuA68xtmOQlSc5K8oMkT1r4i5LcidYy9q3h+z8btv1GkgOH+1Yk+Zvh95ye5J7D/VsnOTbJ2Um+meQ3h/vPBF4LHDQ89qJF/g83Bt5UVXsCj2bpYHk94BdJVibZ4prvKknScmVXTEnS1O1H6554c1rIWwHcA7gN8BDg8QBJbgXcD7gdcEPgNOBdw+94VpI/ALanjbE7P8n+wO8Duw2/+4QkuwG/TWuB2wW4L/BPSW4PHAjcAtgR2AfYH/jPqtopyZNp4/yevJ7/w8JWtqVa3VYB5wBPBp6ZZG6M3Y2Bzy7xs5KkZchgJ0marKG1ah/gPrRAdwFtApQPVtUvgH9O8hOAqvpBkmcDz6WNydth3q+aG2O3C3Bikk/Tgtq7q+oC4IIkn6cFwwOBNw+//4QkPwXuCpwO3BJ4BXAC8LJf4b9yXeBFSZ4FbAlcvMg21wFWJtmKFiq/U1XfAP5h3v54Ii1QSpJ0NXbFlCRN2R7A96pqh6paBWwLXJ+rt3hdCZDkfsCxwHdpLV3rqKrvAKcA95q7a/7D875f5/7hZ+8GnEGbZfNt1/Q/UVVHVNWtqmr3qrpTVd1zkc3OAP4ReCxt5svLF9lGkqRF2WInSZqy/YDPz/v+87SuiIckeT3wIFr3RGhh7QvA+4CDF/tlSW4G3Bt4N/Al4DVJjgZuNvz8IcB2wFOTHDdseyPgjKEr5+7AocAPgTfO+9XnAbce/sZN5824mWvwfwxAVX0tyXnAqcAjkjwBeCGtdW8uaN6YNtZQkqSrMdhJkqbst2ghbM7naV0Rv0abKfNzrF0G4YO0MXM/BD4AXJTkdsNjc2Psrhx+30eqqpK8C/gybQbKp1TVj5O8FbgjreXvPOAxVXVpkg8Cjxj+3iXAn82r6xPA05L8GPgRLQACbJFkzQb+fzvRWukYav0QrRvoqbSA9575Gw9dMR+ygd8nSVqmUuWsyZIkzUKSf6uqB23g8ZfSul1+JsmewEOq6iUb2P7WwC2q6uQZlCtJ6pjBTpIkSZI65+QpkiRJktQ5g50kSZIkdc5gJ0mSJEmd62ZWzJve9Ka10047jV2GJEmSJI3i1FNPPW9Y13Ud3QS7nXbaiTVrNjRjtCRJkiRtvpJ8f32P2RVTkiRJkjpnsJMkSZKkzhnsJEmSJKlzBjtJkiRJ6pzBTpIkSZI6N7Ngl+QtSU5Jcvh6Hl+Z5AdJThy+7jqrWiRJkiRpczaTYJfkkcAWVXUfYOckuy6y2d2A91XV6uHrK7OoRZIkSZI2d7NqsVsNfGC4fTyw9yLb3Bt4aJIvDK173aypJ0mSJElTMqtgtw1w1nD7fGCHRbb5IrB/Ve0FXAd48MINkhycZE2SNeeee+6MSpUkSZKkvs0q2F0EbD3c3nY9f+fLVfWj4fYaYJ3umlV1TFXtWVV7rlq1ajaVSpIkSVLnZhXsTmVt98vdgDMX2eZdSXZLsgXwO8DpM6pFkiRJkjZrswp2xwFPSvIa4LHAV5McsWCblwLvAv4LOKWqPjmjWiRJkiRpszaTCUuq6sIkq4EDgCOr6mwWtMhV1Rm0mTElSZIkSdfCzGairKoLWDszpiRJkiRpRma2QLkkSZIkadMw2EmSJElS5wx2kiRJktQ5g50kSZIkdW5mk6dsCucctXAFhU1v+0MPH7sESZIkScucLXaSJEmS1DmDnSRJkiR1zmAnSZIkSZ0z2EmSJElS5wx2kiRJktQ5g50kSZIkdc5gJ0mSJEmdM9hJkiRJUucMdpIkSZLUOYOdJEmSJHXOYCdJkiRJnTPYSZIkSVLnDHaSJEmS1DmDnSRJkiR1zmAnSZIkSZ0z2EmSJElS5wx2kiRJktQ5g50kSZIkdc5gJ0mSJEmdM9hJkiRJUucMdpIkSZLUOYOdJEmSJHXOYCdJkiRJnTPYSZIkSVLnDHaSJEmS1DmDnSRJkiR1zmAnSZIkSZ0z2EmSJElS5wx2kiRJktQ5g50kSZIkdc5gJ0mSJEmdM9hJkiRJUucMdpIkSZLUOYOdJEmSJHXOYCdJkiRJnTPYSZIkSVLnDHaSJEmS1DmDnSRJkiR1zmAnSZIkSZ0z2EmSJElS5wx2kiRJktQ5g50kSZIkdc5gJ0mSJEmdM9hJkiRJUucMdpIkSZLUOYOdJEmSJHXOYCdJkiRJnTPYSZIkSVLnDHaSJEmS1DmDnSRJkiR1zmAnSZIkSZ0z2EmSJElS5wx2kiRJktQ5g50kSZIkdc5gJ0mSJEmdM9hJkiRJUucMdpIkSZLUOYOdJEmSJHXOYCdJkiRJnTPYSZIkSVLnDHaSJEmS1DmDnSRJkiR1zmAnSZIkSZ0z2EmSJElS5wx2kiRJktQ5g50kSZIkdc5gJ0mSJEmdM9hJkiRJUucMdpIkSZLUOYOdJEmSJHXOYCdJkiRJnZtZsEvyliSnJDl8ie12SPKlWdUhSZIkSZu7mQS7JI8Etqiq+wA7J9l1A5u/Gth6FnVIkiRJ0nIwqxa71cAHhtvHA3svtlGS/YCLgbNnVIckSZIkbfZmFey2Ac4abp8P7LBwgyRbAi8EDlvfL0lycJI1Sdace+65MylUkiRJkno3q2B3EWu7V267nr9zGPCGqvrJ+n5JVR1TVXtW1Z6rVq2aQZmSJEmS1L9ZBbtTWdv9cjfgzEW22R94ZpITgd2T/MOMapEkSZKkzdrKGf3e44CTkuwIHAg8LskRVXXVDJlVtc/c7SQnVtXTZlSLJEmSJG3WZhLsqurCJKuBA4Ajq+ps4PQNbL96FnVIkiRJ0nIwqxY7quoC1s6MKUmSJEmakZktUC5JkiRJ2jQMdpIkSZLUOYOdJEmSJHXOYCdJkiRJnTPYSZIkSVLnDHaSJEmS1DmDnSRJkiR1zmAnSZIkSZ0z2EmSJElS5wx2kiRJktQ5g50kSZIkdc5gJ0mSJEmdM9hJkiRJUucMdpIkSZLUOYOdJEmSJHXOYCdJkiRJnTPYSZIkSVLnDHaSJEmS1DmDnSRJkiR1zmAnSZIkSZ0z2EmSJElS5wx2kiRJktQ5g50kSZIkdc5gJ0mSJEmdM9hJkiRJUucMdpIkSZLUOYOdJEmSJHXOYCdJkiRJnTPYSZIkSVLnDHaSJEmS1DmDnSRJkiR1zmAnSZIkSZ0z2EmSJElS5wx2kiRJktQ5g50kSZIkdc5gJ0mSJEmdM9hJkiRJUucMdpIkSZLUOYOdJEmSJHXOYCdJkiRJnTPYSZIkSVLnDHaSJEmS1DmDnSRJkiR1zmAnSZIkSZ0z2EmSJElS5wx2kiRJktQ5g50kSZIkdc5gJ0mSJEmdM9hJkiRJUucMdpIkSZLUOYOdJEmSJHXOYCdJkiRJnVs5dgHLwTlHHTF2CWx/6OFjlyBJkiRpRmyxkyRJkqTOGewkSZIkqXMGO0mSJEnqnMFOkiRJkjpnsJMkSZKkzhnsJEmSJKlzBjtJkiRJ6pzBTpIkSZI6Z7CTJEmSpM4Z7CRJkiSpcwY7SZIkSeqcwU6SJEmSOmewkyRJkqTOGewkSZIkqXMGO0mSJEnqnMFOkiRJkjpnsJMkSZKkzhnsJEmSJKlzBjtJkiRJ6pzBTpIkSZI6Z7CTJEmSpM4Z7CRJkiSpc6MGuyQ3TnJAkpuOWYckSZIk9WxmwS7JW5KckuTw9Ty+HfBRYC/g00lWzaoWSZIkSdqczSTYJXkksEVV3QfYOcmui2x2N+A5VfVy4BPAPWZRiyRJkiRt7mbVYrca+MBw+3hg74UbVNVnqupzSfahtdqdMqNaJEmSJGmzNqtgtw1w1nD7fGCHxTZKEuAg4ALgskUePzjJmiRrzj333BmVKkmSJEl9m1WwuwjYeri97fr+TjXPBL4MPGyRx4+pqj2ras9VqxyCJ0mSJEmLmVWwO5W13S93A85cuEGSP0/ye8O3NwJ+MqNaJEmSJGmzNqtgdxzwpCSvAR4LfDXJEQu2OWbY5rPAFrSxeJIkSZKkX9HKWfzSqrowyWrgAODIqjobOH3BNhcMj0uSJEmSroWZBDu4Krh9YMkNJUmSJEnXyswWKJckSZIkbRoGO0mSJEnqnMFOkiRJkjpnsJMkSZKkzhnsJEmSJKlzBjtJkiRJ6pzBTpIkSZI6Z7CTJEmSpM4Z7CRJkiSpcwY7SZIkSeqcwU6SJEmSOmewkyRJkqTOGewkSZIkqXMGO0mSJEnq3JLBLs2e63nsNhu/JEmSJEnSr+Katth9OMlrkjwryT0BkuwBvHd2pUmSJEmSromVG3owSaqqknwbOBq4NXBgkqOBS4HHbIIaJUmSJEkbsMFgB3w8yUXADYHbAnsAewL/AtwZWAX870wrlCRJkiRt0FLB7tG0VrpnAS8FfgQ8vKquSLIT8NYkv1VVNdMqJUmSJEnrtVSwewawK3Ae8GXgb4HvJXkPcBfgzw11kiRJkjSupSZPuQFQwH2BLWlB8HTgv4CdgK/OsjhJkiRJ0tKWCnafBL4H3B34BvAIYDfgQcCRwPNnWp0kSZIkaUlLBbt9gV8CfwfcHngX8G3gc1X1LmCXJC5yLkmSJEkj2uAYu6r6yyTb0GbFvGLY/vCqOnnY5I+q6soZ1yhJkiRJ2oClJk+hqi5Osh2wVVV9Dzhr3mM/mWVxkiRJkqSlLbVA+Z2BbWgTpxw2LFR+5+HhFcCKqtp3tiVKkiRJkjZkqfFx1wMeXVX/AawB7kRb0+79wBWGOkmSJEka3waDXVV9Edhx7tsF/0qSJEmSJmCDwS7JbYEVSXYFdhjuvgVwE+C6SW414/okSZIkSUtYqivm4cDFwJ/RFiX/JPAEYFfaunYvmWl1kiRJkqQlLbXcwZMBkrwFeDfwjKp62iaoS5IkSZJ0DS01K+ZngcuB3YDbAHskefDw8OXAsVX1xtmWKEmSJEnakKXWsduvqi5PcmJV7ZfkccCqqnp9kgOBdwEGO0mSJEka0VJdMS8fbh42/Pth4GHD7c8CO82mLG1q5xx1xNglALD9oYePXYIkSZLUnfVOnpJkRZJ7A1TV54Z/f06bOIWquhjYdlMUKUmSJElavw3NihngBQBJ3pjk75LsBuwz3HcDWldMSZIkSdKI1hvsquoK4LLh292AT9G6Xs4tUH4g8MFZFidJkiRJWtpS69jtnOQZwHbAnsN9d0zyZuCRwAdmWZwkSZIkaWlLBbuLge8APwf+Z9j+DFpL3V2r6oLZlidJkiRJWspSwW4LYKthu62AlwI3Ai4CLk+yeqbVSZIkSZKWtFSwuy5wS1qo2x54BXBb4GjgucBBM61OkiRJkrSkpYLdd6vq74GfAl8BLgFOBV4HnIDr2EmSJEnS6Da0jt0WwJbDtycDd6eNt0tVHTPMmrl1ksy+TEmSJEnS+qzcwGMFvGYIbh+vqn8HSPLFedu8qKpq0Z+WJEmSJG0SG1rH7krglOHbQ5PMbfviJFsleTbDAuaSJEmSpPEsNcbun4YWuSuA9yY5F/gWsA9tgfJLZ1yfJEmSJGkJG+qKCXBukhsMt78F3AT4CHDl8CVJkiRJGtlSwe47wMHAb9Ba7W4G7AXsCNwCW+wkSZIkaXRLdcU8G7jpsN11aAuWr2TtouVL/bwkSZIkacaWarH7P+AHwJ2BL9HC3cnAV4E7AJfNtDpJkiRJ0pKWanH7OXDj4fYdaGvZPZO1LXeSJEmSpJEtFc6+RVuk/PeBg+bWrEtyHeDmwBNmW54kSZIkaSkbDHZV9Z1hgfJXz1+IvKouA96R5L9nXaAkSZIkacOW7E45BLpPreexL270iiRJkiRJvxJntZQkSZKkzhnsJEmSJKlzBjtJkiRJ6pzBTpIkSZI6Z7CTJEmSpM4Z7CRJkiSpcwY7SZIkSeqcwU6SJEmSOmewkyRJkqTOGewkSZIkqXMGO0mSJEnqnMFOkiRJkjpnsJMkSZKkzhnsJEmSJKlzBjtJkiRJ6pzBTpIkSZI6Z7CTJEmSpM4Z7CRJkiSpcwY7SZIkSeqcwU6SJEmSOmewkyRJkqTOGewkSZIkqXMzC3ZJ3pLklCSHr+fxGyb5eJLjkxybZMtZ1SJJkiRJm7OZBLskjwS2qKr7ADsn2XWRzZ4AvKaqHgCcDTxoFrVIkiRJ0uZu5Yx+72rgA8Pt44G9gW/N36Cq3jDv21XAOTOqRZIkSZI2a7PqirkNcNZw+3xgh/VtmOQ+wHZV9blFHjs4yZoka84999zZVCpJkiRJnZtVsLsI2Hq4ve36/k6SGwOvB56y2ONVdUxV7VlVe65atWomhUqSJElS72YV7E6ldb8E2A04c+EGw2Qp/wT8RVV9f0Z1SJIkSdJmb1bB7jjgSUleAzwW+GqSIxZs81TgHsALkpyY5KAZ1SJJkiRJm7WZTJ5SVRcmWQ0cABxZVWcDpy/Y5o3AG2fx9yVJkiRpOZnVrJhU1QWsnRlTkiRJkjQjM1ugXJIkSZK0aRjsJEmSJKlzBjtJkiRJ6pzBTpIkSZI6Z7CTJEmSpM4Z7CRJkiSpcwY7SZIkSeqcwU6SJEmSOmewkyRJkqTOGewkSZIkqXMGO0mSJEnqnMFOkiRJkjpnsJMkSZKkzhnsJEmSJKlzBjtJkiRJ6pzBTpIkSZI6Z7CTJEmSpM4Z7CRJkiSpcwY7SZIkSeqcwU6SJEmSOmewkyRJkqTOGewkSZIkqXMGO0mSJEnqnMFOkiRJkjpnsJMkSZKkzhnsJEmSJKlzBjtJkiRJ6pzBTpIkSZI6Z7CTJEmSpM4Z7CRJkiSpcwY7SZIkSeqcwU6SJEmSOmewkyRJkqTOGewkSZIkqXMrxy5A+lWcc9QRY5cAwPaHHj52CZIkSdJVDHbSDBhAJUmStCkZ7KRlbAoB1PApSZJ07TnGTpIkSZI6Z7CTJEmSpM4Z7CRJkiSpcwY7SZIkSeqcwU6SJEmSOmewkyRJkqTOGewkSZIkqXMGO0mSJEnqnMFOkiRJkjpnsJMkSZKkzhnsJEmSJKlzBjtJkiRJ6pzBTpIkSZI6Z7CTJEmSpM4Z7CRJkiSpcwY7SZIkSeqcwU6SJEmSOmewkyRJkqTOGewkSZIkqXMGO0mSJEnqnMFOkiRJkjpnsJMkSZKkzhnsJEmSJKlzBjtJkiRJ6pzBTpIkSZI6Z7CTJEmSpM4Z7CRJkiSpcwY7SZIkSeqcwU6SJEmSOmewkyRJkqTOGewkSZIkqXMGO0mSJEnqnMFOkiRJkjpnsJMkSZKkzhnsJEmSJKlzBjtJkiRJ6pzBTpIkSZI6Z7CTJEmSpM4Z7CRJkiSpczMLdknekuSUJIdvYJsdkpw0qxokSZIkaTmYSbBL8khgi6q6D7Bzkl0X2WY74B3ANrOoQZIkSZKWi1m12K0GPjDcPh7Ye5FtrgAOAi6cUQ2SJEmStCzMKthtA5w13D4f2GHhBlV1YVX9dEO/JMnBSdYkWXPuuefOoExJkiRJ6t+sgt1FwNbD7W1/3b9TVcdU1Z5VteeqVas2WnGSJEmStDmZVbA7lbXdL3cDzpzR35EkSZKkZW9Wwe444ElJXgM8FvhqkiNm9LckSZIkaVlbOYtfWlUXJlkNHAAcWVVnA6evZ9vVs6hBkiRJkpaLmQQ7gKq6gLUzY0rSr+2co8Zv8N/+0PUuySlJkjS6mS1QLkmSJEnaNAx2kiRJktQ5g50kSZIkdc5gJ0mSJEmdM9hJkiRJUucMdpIkSZLUOYOdJEmSJHXOYCdJkiRJnTPYSZIkSVLnDHaSJEmS1DmDnSRJkiR1zmAnSZIkSZ0z2EmSJElS5wx2kiRJktQ5g50kSZIkdc5gJ0mSJEmdM9hJkiRJUucMdpIkSZLUOYOdJEmSJHXOYCdJkiRJnTPYSZIkSVLnVo5dgCRtLs456oixS2D7Qw8fuwRJkjQCW+wkSZIkqXMGO0mSJEnqnMFOkiRJkjpnsJMkSZKkzhnsJEmSJKlzBjtJkiRJ6pzBTpIkSZI6Z7CTJEmSpM4Z7CRJkiSpcwY7SZIkSercyrELkCRtOuccdcTYJQCw/aGHj12CJEmbFVvsJEmSJKlzBjtJkiRJ6pzBTpIkSZI6Z7CTJEmSpM4Z7CRJkiSpcwY7SZIkSeqcwU6SJEmSOmewkyRJkqTOGewkSZIkqXMGO0mSJEnqnMFOkiRJkjq3cuwCJEla6Jyjjhi7BAC2P/TwsUuQJOkascVOkiRJkjpnsJMkSZKkzhnsJEmSJKlzBjtJkiRJ6pyTp0iS9GtykhdJ0lTYYidJkiRJnbPFTpKkzdwUWhZtVZSk2bLFTpIkSZI6Z7CTJEmSpM4Z7CRJkiSpcwY7SZIkSeqck6dIkqRJcJIXSfr12WInSZIkSZ0z2EmSJElS5+yKKUmS9Cuwy6ikKbLFTpIkSZI6Z7CTJEmSpM4Z7CRJkiSpcwY7SZIkSeqcwU6SJEmSOmewkyRJkqTOGewkSZIkqXMGO0mSJEnqnMFOkiRJkjpnsJMkSZKkzhnsJEmSJKlzBjtJkiRJ6pzBTpIkSZI6t3LsAiRJkrTxnXPUEWOXwPaHHj52CdKyYbCTJEnSKKYQPmHpANpLnVre7IopSZIkSZ2bWbBL8pYkpyRZ76WFa7KNJEmSJGnDZhLskjwS2KKq7gPsnGTXX2cbSZIkSdLSUlUb/5cmrwP+rar+NcnjgK2r6m2/xjYHAwcP394e+MZGLvWmwHkb+XfOgnVuXNa5cVnnxtNDjWCdG5t1blw91NlDjWCdG5t1blzLtc5bV9WqxR6Y1eQp2wBnDbfPB+7x62xTVccAx8yiQIAka6pqz1n9/o3FOjcu69y4rHPj6aFGsM6NzTo3rh7q7KFGsM6NzTo3Lutc16zG2F0EbD3c3nY9f+eabCNJkiRJWsKswtSpwN7D7d2AM3/NbSRJkiRJS5hVV8zjgJOS7AgcCDwuyRFVdfgGtrn3jGrZkJl189zIrHPjss6Nyzo3nh5qBOvc2Kxz4+qhzh5qBOvc2Kxz47LOBWYyeQpAku2AA4DPVtXZv+42kiRJkqQNm1mwkyRJkiRtGk5YIkmSJEmdM9hJkiRJUucMdpIkSZLUuWUV7JK8MMleSTJ2LeuTZEWSbTbw2GM3dU3rk+RJSXYYu46l9FLnnCR3TXKzed+vSPLkEUu6Si/7spc655vy874hSfYduwbo671zTpJnLHLf6hFKWVSS+yXZYuw6NqS3Yz3JHsO/GWr/wyTXHbuuOT2cJ0E/dc5J8sBF7ttjjFoW08OxDn3UOXaNyyrYAT8Bng98J8n7kjw5yc3HLmqBnYBnJtk3ySPnfwGPAJ40bnlXszvwb0lOTfLKJKuTzGoJjWtj8nXOnXQOJyjvA26T5JMAVXUl8MQRy5tv8vty0EWdPTzvSbZI8qEk10ny4eG++Z8dLx2ptIV2ooP3ziSfS3JSklsCTx7ue3SSlcPn0ZGjFnh1zwa+neTYJIck2WnkehbTxbEOkOSdwCHDt0fRlnpaRTv2p6KH8yTooM4kOybZIcmNgT9Jcvskd0ryG0keDrxq7Brn6eFYhz7qHLXGZTkr5nBSck/gCcDBwDeqardxq2qS3Ap4DPAQ4CRgB2Af4DTgW8AeVfWw8SpcV5JVwH7AA4GHA/9RVQ8ft6p1TbnOJD+mPcfXA15RVZ9IciLthHQF8L6qesCIJV7NlPflfFOvs5fnPcm/AmuARwP/AOwB/DPwceAdVTV6a1gv751JtgbeDLwMeGNV7ZfkD4HrA3cGPllVkznRH1pE9gB+i3Ys3QL4VFX96aiFLTD1Yx0gyaerat8ktwU+BOxWVZXkhKrab+z65pvyedJ8U64zyQ+BAt4L/Abtff4ewNuA+wM/ncJ70pyOjvXJ1zlmjZO8qjUrwwfq/YH9aTv7l7Sro58Ys645w1XGI2gf8DcHPgbsCtwe+ALwn7QXymQkuQNtfx4A3JFW8yT253wd1Hka8KfAscAPh/t2Bf4GmFRXkw72JdBNnb0871cCnwH2BXahnaDcCXgscMKIdQF9vXdW1c+TXDl8myS3AD5Na7375ZRC3WAb4GbAjsO/5wM/HrWiBTo51gEuSPI82oWblwHbDC3KkzH186Q5ndT5DVqw+zrtxP6zwA2A82jvqVMz+WN90EOdo9W4rIId8DXaB+gngFdW1f+NXM9iTqK9Uc3v6lQL/p2EJN8Fvk/bny+uqi+NXNKipl7ncGVnRVV9c/iQf3+SvYFvVdVThm2OH7XIwdT35Zwe6uzheU9yHeCjwKVV9akkzwLOooWndwJfBF49YonzdfHemeRVwPwWhT8AHkA78fvtUYpajyT/AWxPC++fAF5YVReOW9XV9XCsz/NEWpfgV1bVR4eWuzvRWpumoofzJOinTmjvP6FdbNqedpFpB9oFskno4ViHPuocu8blFuzuAjye9v/+yci1rKOqLh9O5G5I63f/emBr2knUzWm1nzNehevYHbg3cMnEP0ynXucWwIWX+kcAACAASURBVAlDP/wVwLuBPwT+PsmNaK+Hy0esb76p78s5PdQ5+ee9qi5L8ifAq5O8jdaN6PrApcAxwFNprQ9rxquyu/fOT9P2Yw1fr6Ptz48DRyZ5dlV9e8T65nsarWXh51X1P2MXsx49HOsAVNUlwNHzvv82cNh4FS1q0udJ8/RS52Jq3tdU9HCsQx91jlrjshpjNwz8/wKwHbB1VT1z5JLWkeR+wFZV9clFHlsBfKyqDtz0la0ryduBy4AbAf9dVX85bkWL66jO2wNvpF3B/zHtxPQjwMuqahLdSzral2+ngzqhm+f9X4A/oYW5Pxz+/e2q+mWS91XV745aIN29d74L+AWtpe6FtG47t6QF0rdX1Toz6I1haF3cg9ay8M6qOnqJH9nkejrWe9DDeRL0UWeST9PC27tp3YS/CDwUOI52QexnUxlj18OxDn3UOXaNy63FbruqejlAks+MXcxCSbaizfL0iySLDaReQesGNRW3raq9hy5lnwGm+oE66TqT7A+8gjZG4Aa08SHn02b5+wbTaWmAie/LeSZfZ2fP+zbAdWndHX9O61ryy+GxC0aratDLe+fwenwArVXxZbQP/+vTWh7eVlU/SvK2JCuragqt9PtU1X2HMYwnMK+1aUImf6x3ZtLnSfP0UOcdhn/vTOuKeX/gdsBNaT02pqSHYx36qHPUGpdbsNs2yX1oB9i2Se4790BVnTxeWVfVcClwYJKdaSd8d6NNmzrXdzzAViOVt5ikTS8cYIt5t6mqH27wJzetSdc5tDB8MslNgecA/wt8mTaGYB/gJcNkC0+oqovHqxSY+L6cZ/J1dva8nwkcSgtIfwPcMMm2tJrfNGJdQFfvnSto4wC/TAvvV1TV3yc5Bnhtkr+sqpeMWuHV/QKu6uo6haC5mMkf652Z9HnSPD3UuSetm/UVtCUtnk17D/gZ8F0msJzNPD0c69BHnaPWuNy6Yr5tPQ/V3GQFU5Lk0cAZVfX1sWtZzLxuBgtn76spTd3cUZ1b0cYN3Iw2qcZH5j12r6r6/GjFra2jl33ZRZ3Qx/O+PknuCNymqv517Frmm/p755wkO84PH0keUVXHjlnTfMPEJJczhKZ5t6uqbjdmbXN6OtZ70Mt5Ui91zknye1X1zgX33X0q40J7ONahjzrHrnFZBbteJHkQ8N1htrzdqur0YYzIYcD7q+q7I5eoGUry/6rqyCRbVNUVY9ej2Upbf2tb2lXd+VZO5VhPck9a69ePgDtM5WRkKcP75nOq6tVJ/qCq1ncyuEkluVtVfXne9yuAvYHPAU8HXl9+OEubhbTZjr9SVT8duxZt/lYsvYlG8FrgDkn2pK3LAi3tfwl4zWhVaSaS3DXJXkmek+SBwOrhoTVJjk9yWpLHj1iiZuv5tPFWL5z39Z/AYWnLDUzBh2mLrH6UYdxIkhckeUWSIzf4k5tIkj2TnJLkC0n+M8lptPGKq5Ncn7ZO3FQclWRlkqOSPAK4K/By2nN/fZbfMIllJ8mdhtfAdZLcaex6NFOvoPXKkGbOD49p+gFwKnAQbfzA62jBbhvaxAXavPwMeDNt0dKjgGcOY4UupbXSbk9b80abr+dU1VWTpST596o6eMyCFvgG8CngX2lT8q+gTdu/JfDXYxY2z/Voi5Q/jzbr3O8AD6Z105sLz1Nx6TD+4o60MZXfo02N/cIksbVuWTiDdpEkwFeY3mQa2giS3IP2WX7W8P3zgYfTlmb536raf8TytBmyxQ5I8oyxa4CrWm6+TnteitY161LaAsCvBl7MtAbbLiptseXJm0qdVXUmrTX2h8AzgJ2BvWgz5z10uH3rseq7JqayL5cy4Tqfl+RFc1/AzsPtG4xd2Dy7A68E/gx4fFWdXFUnMoE1pJJsQ+vKOF/RAtN9gXMWWwZhDEn2af/kxrSLq9vQZkUlye8DXxsem6z5E1VM1YSP9Tm3oU2g8R3ae/6kTeU8aSlTqnO4APZXtItNb0jydFq3+/2A/+kh1PVwrEMfdW6qGg12zdfGLmDwNVpz/RW0D/wtaVOMvx14A7BvJ2OupjD73DUxiTqT7Eir5TvAT2knpL8DXEIbdHsFraVkyiaxL6+BKdb5OuBDtJm0PkYL+AcB/8YEWuiTPJv2mrwx8E3a4to7JXn7MIHBFFqXtqTNhLlw4d9Vw787jVDTOoZj/Vm0q/X/DNwdOIQ20yi0RcrvUlXnj1PhNXavsQu4BqZ4rF+lqr5fVZcPX98fu55rYCrnSUuZRJ1JbgH8Pe38bUva53gBuzG9xck3pIdjHfqoc5PUuOyCXZK7JLnZgrsnMWXq3Js8cHPg94D3s3Zmrz8D7rGBmaBGkeT6SRZ2IVkzSjG/oqp639g1DH4KvIR2In8ObZHqF9C66FxI6wI3+hpcc3zON54k76aFty/QruLeFngU8PWq+kJVXTZmfYOf0xZ/vjvwKuAJtIlU/oZ2NXp0VXUBbZH3p9L24cOBXarq7cDJwOlJDhmvwqaqflhVjwV+UlX70p731wBPGzbZEfjroSv2ZFXVUWPXsJSpHetzkuyynvt33NS1/Cqq6tNj17A+SbZLcvck159QnbcA9qV9jj+Edi53NG2pk7DuLK6T1MOxnuSRPdS5qWpcVmPskrwJuBVwkyRnAH9aVRfRTqqnNC3yA4BnVNX/JHlIkocAf0Fb2+oVSa5bVb8Yt0QYuow9lrZ20HuBVwwtikczrf05acMaZRcnOYjWPedJw0LFD6GdPK+pqh+NWuTA53yj+zJtQeWzgV2AB9FO9p+TBGCrqnrBeOVBVR2d5HG0iZy+AlwJfK2qvgIw1DkFpwGvZ+2C6VsNXaGuA7yNNiZw9MVsk/w/2njA+eau3l8GnMK0FqfXRpDkaVX1D8Bbgfsn+WPa830e7Zh/D3C/EUvsyjAO+YAkzwT+iDYOePckz5vCkiFV9YUkq2m9MZ5I6+kA6/Yq0K9gOAe52l3A7ye5S1W9dIyapmZZBTvgtnN9moeT6E8lmdR6J0neQetCsleSWwLn07pl/R7tis9hY9a3wH5VdZdh5r5DaYstP56JXYlKchzDGJb5dzORdY6GMTcvpj3XtwLem+R82tib86vqcyOWt5DP+cb137TWsI8CjwFuQpss5+W08bVTmRWzaIuRvwF4J/COJK8F7sR0TlDuDPxxVT0qyUur6kVDiDq6qirJn45dYJItaS2gN09yPG3c4q2APwB2pU2SdOxEWmpJWzh90fOEqawV1tGx/vihx80vh+8PoV0suYjW8n3oWIXNl+SztAsPF86/m+ntz7leI08B9qiqS5PsQBu2MHqwA6iqs5M8GTiGFuChHf+fpTUwfKGq9hqrvvl6ONYHP6bNHvz3tNmjQxu6cuKINV3N2PtyuQW7LZLcrqq+WVX/mOSLwHuBW45d2DzPBy4GHkk7kToL+AztSv5fJ3nXhJqcVya5SVX9H22mvM8AHwG2G7muhf6C9gH6qKr65VIbb2pV9VlgvyS/C9we+DZtevk7AI9L8ingkKr69ohlzvE537jOonVrPI02Q9rDkjyR1j3vCVX1nVGrW2sv2gfpmbRug9+j1fgzphPsDgCekeQJrB2b+B/Ak5McBrwbOH2s4gCG1+Lrk7wBeC5tUfqn0PbnVsA9gZPT1tw7Y7xKr/Ie4EW05/zKkWtZn16O9dNo75Nzx8uPaN3vLwbuWVVT6c7+GNq4sIOq6sIlth3TLdOWB/o5reUTWki+/nglrWtYj/hzDGP/quplTGuG3jk9HOtzPUiOpV0MuQXt+L9gOI+ailH35bJaoHxoATukqg6fd9+NgMMm1hJGkgOBPYGThpnnSHI94K5V9fkxa5uTZHfg6VX19Hn37QS8qqoeN1ZdixnGrFxYVectufFIhlawWwG3Az5TVZcM9+8GXK+qThmzvqGW3WnH0B/Nu28nfM6vlbT+jPepqpOH7+8N/LiqvjduZc0wprKq6srh+7sC/z3FyZyG9/RLq+rn8+67Ke29cyrjb4CrZkm7blWdMO++m9OWPhh9tlGAJPcCfjCV7uCL6eFYHyYh+l3aDJhfGu4+idba8HngWXPH19iGY+jyYajKJCX5TdoFp3vTurd+mnYh52+q6h/HrG2hYfzkDatqEhO7rE8Px/p8Se5Pa71bVVW7jV3PfGPuy2UV7ACSbAvsQevysoJ2BfrzNcEdMYwPObiq3jR2LRuS5Nas3Z/fn+KbQtp06HvSwfM+ZUO30UVN7IpZN895ktvQrur9DLhkbvxskocCF08tjGj5mfp7fA/HetpSFt8FXlhVDxh6YhzIMEaIdnL68jFrnDNM8LI3V9+fH6uqn41Z12KGC4vbM8HX5nDB7kFV9fHh9g3nLtikLX3ww6r6l1GLXGDqx/qc4WLjTWg9HW5WVV8cuaR1jLUvl1WwG/o6P5rWv/kC2noiuwF3BPafyptWkpOr6r7D7U9W1f5JTqyq1SOXdjVDN4g/B77O1ffnhbRuMVMZJ/JkWveSzzDh570HSd5M60oU2uLPH2Pt+IvJLKjd03Oe5ETgq7QpsbeiTYX/LVo38fdX1e3Gq07LWZIHAf+PCb/H93Ksp62rdwnw51W17xDsfgmsHCYB+STw4LG7k6YtoL0LcDxt3Pfc/nwMbcmlSUzs08P5xxDmjgceRhubfBxtDOAVtNl7P1JVtxivwrV6ONbhql5Dr6Dtw5/Sut7uApxQVX8yZm1zxt6Xy22M3VOrap1Zp5L8LfBA4IObvqRFXTLMpnQya/vnTrFLxOHAPguviiY5Gvht2mxQU9DL8z55VfWHc7eTfHpKYW6Bnp7zqqpnJnk47cPqMuAOVXVaksksc6Fl6QVM/z2+l2P9cuDxwGVJngW8jzahxveH1oe/oB3/Y3tIVf3mgvuOTXJ92szcU9mfkz//GCZtgjb53SpaTa9j7ZjA14xU2mJ6ONYB/pZ2AeSSuTuGAP3eJA+tqo+OV9pVRt2Xy20duwuSvCjJHdLW4to+yaOA/Wl9s6eiaN0gTp533yT63i9wJfDEYewfAEn2oC3C+F+jVbWuXp73yUuy49wXsGWSm8/7fkq6eM6T3J61kym8krYI+BFV9drhvuXTpUJT1MN7fBfHOm2tz4/QZpY9hxbibgf8CW123N+ayJjVryV5a5IHJblrkr2SPJe2nM2/j13cPJN+bSZZkTbz7VbACbTWpaL1zthu+LrveBWuY9L7c57r0YZTzbcKuDXw/U1fzqJG3ZfLrSvmSuCPgdW0qeR/BpwKvLOqfjBiaQAkuS7wZFpT7QHDuIEv0q5QPIO2AO+WVfX68apcK8kNgZfSruJdRvug+irwpgnN8DX5570nST7N2q6Y81VNaCrsBc/59Wgt3pN6zpOsol29fQDtA/6faFftXwkcRjsheFVV3X60IrWs9fAevzm8vyfZCrh3VX1m7FoAkjyCdd87PzyVbq3QzWvzprQwvIbWXfDpwF1o64B+LUmmMg60h/0JV42pfC2tq/VPaOcjFwBvmMp4xQX78vLha5Pty2UV7ACS3AU4r6rOnnff/arqpBHLmqvjZrQAt7qq9hnuOwP4a+DZtBfzFlX1lvGqlNYvyRvnz5g5puHCyD1ZO3j5e0xsQgWAJLvSwtx2wDsYxiwOD59RVaeNVZsEV51MXTWRxlQnVOhBkpVVdfmC+0IbDziJFrFh8pT7cfX3zilPnjLJ1+bQxfaTw5jKV9Mu3t2T9l5/L+DdVfX+MWvUbCS5ztxYurT1FS+qqos3yd+e2DnOTCV5E206+RvT0vOfVtVFSU6YWGvDv9PWXPpdYMUwg9ZHquq3Ry5Nm0iSOwHfpJ3k71pV/z1ySdfIVI6lJH9Amyhp0hMqACT5K+A2tIW0PzXc92zgQ1NscejltWmd196CSQDOp01UMLkJFXqS5KSqul/a8jbHVtVDh2D38ap60ATqez5tSYbjufp759QmT5n8a3MInQdU1ZuTvIC2Nu2c42ndB1+1MOirX0m2pE2QcwPaBZGvA/vSeuC8qareNusaltvkKbetqv0BkhwEfCrJzFeB/zUE+CRtkPKxI9eyXkmOo714YW0rw9wMiaOf3M9J8llal5ILmXCdC5xB+xAI8BVgi3HL6c5Tpj6hQpKb0C7e3Ig2y9fPk9yT1gXm+8BHkzy2qr4+YpmL6eW1aZ3X3uQnVOjl/T1tqaXLaJOjXYfWwrRy3u2pXGXvZfKUyb82aSfzzxpa7h4KPIr22vwA8ImphGTo6nzuGNbNLnN1TuF8/r60nkEvSPJ42kWGfdKWL/sMYLDbyLZIcruq+mZV/WOSL9KmFL/l2IUtcGlVnTVcxZt7jq4/ZkHr8RfAkbQX7qhTNC/hMcDbgYOq6sKRa7mmbgPMzYi485iFdOqCJC+ifYCeBWxN61q0P/CqMQub57LhaxfaBAofAO7D2omSPgE8khb6pqSX16Z1XntzkwD889wsdPMmAfirUStbq5f392OBn9Nalf6ZdjK6+7zbUwl2X0vyVtZ979yPNm5oKnp4ba4ATqRNjnMarWX+eODLwBFJnj1/dseR9XI+9x7gRcBTmc4xM9/3gXsMF0I+BPzncP9OtCWNZm65dcW8JXBIVR0+777taOvKHDZeZYsbgt2Dq+pjY9eyPkl2Bi6sqvPGrmVDktwIuLyqprhsxGYjbQmEfSdQx8IJFS6iDWCf5IQKSfYCtp/IVM0SMP4kANdUD+/vw4nebrQFyh84fL7/W1U9cHj8X6vqwaMWOZg3ecrcZDSnAcdNrAv75F+bw6yIO1TV94bv7wRsXVWnjlvZ4jo6n7sX8IMpjaecL8k+tCWLjpl333HAyzbFc7+sgt18Q6DbCfj2lN6sejXl/ZnkJlX1f8PtuwC70ial+Na4la0ryS5V9Z1F7t+xqn44Rk3XRJLfqarjkuxQVT8eux6AJLcGblBVXxm7ls1BL69N69y4hjEj16uqn4xdy2J6eX9PcnNay/zdaC05RwE3r6p3DN20PlFVB4xZI6yzP+9KW0h7cvsTrgrLl9S8ZSKS7DrFWnsw5ckF5+vheR+zxmW1jt0wKQlJngmcRFvg8r+Gq1P6FXW0P/8JIMnLadPL7w18KMkkZm8ESPK04eZbh+//OMnTkzw6ya2Afxyvumvk+QATCnXPoXWzfnmS05P87tg19aqX16Z1bnxJHkfrNnZikuOTTGndrTmTf38HGFoXXkeb6ONjwNer6h3DY1cCzxmxvPnm9ucRtKWWJrk/h672pwBnJDl8CMcAR49YVrfSJhc8EvhwkrcMY0IBXjJiWetY8Ly/cBi/CBN63seucVkFO9YOSn8KsEdVPYo20PHw9f+INqC3/flA2iKwz6X1wz9k5Hrme/xw8M/1bT8EuITWhfCvgEPHKqxTj6iq36yqh9HG1D0ryX8kWTgpgJbWy2vTOje+PwZ2q6rdgX8B3pHkg0luM3Jdi5ns+3uSbZO8F/j/7Z13mGVVme5/bwcQCQqMXBgEAwiIOiAO6nAlSUaJ1ytIVFB0CF4MYxhF1CtI8lEYFUUuiAkwgEgGyUEQMaEM3EEQAUEEUURSN7zzx9qn+1T1qepurKq1vj7f73nqOfvsXeGtb4V91l7fetcxwHOA9YCPq2wEfpKkr1LWOLXE1hRHx+bi2fF62y+nzIA+STHDW6mypsisbntb26+hrAO8RNLLaosaQH+5PwH8sMFyr6px2MxTVpG0FWUBc88K9xHaNCaJQJR4vkTSOykLbZ8N/I3i/rR4VVUj+Sllb5tebvS9wAUUres3tGZg0BN7USyxW+LxvpS2ZSmLrW8FPsXcxczJghGibpI6J4MnmfsA735KKuEDwPGUD/4tEKF/fxQ4BHgcOAC4j1IP7uiui3b09sdzCdqMJxRH0V7a6FGSrgDOprStZOGJYi4Yodyrahy2Gbu3AmtTnJ626NYOXEa7M0yt81ZixPM1lA8llwL/3Ok8FXhXVVUjuZuSnvNKSRdRbqrvBK4EVupLM6nNOwZ8vR24rqaoAXwA+LakX1Oc5y61fbftt9aVFZIodTN1TjyHAT+SdDWwN2Wz5Rta2G+tj+b7d9tP2/6N7XsoM58PA6vYvqf7unvQestKNB/PjgMpD+oAsH09Ze/SG6opis1e3RcAtm8HtgG+Xk3RYCKUe1WNQ2ueMghJh9puKp84MlHiKel421XXD0jaG7id4pi2paRLKJ2qKB+onmf7sJoaB6GyB9NGwFa2P1Bbz4LSQplHIUrdTJ2TQzfQXNr2XwZca76Pb6WtS1qduem3g/ij7cemSs8zpZV4zo8IdTMSWe4Tx2RrHLZUzPmxcW0Bo1Gxx/3/lJv+S2zfXFnSwtBcPMdgzdoCKJbSSwIz+86dBcywvYWkH0o6uoX9ZboPKFt3X6+lzD5cWlXUwtNCmc9Do+09St1MnZNAZ+wxz6CuI0If30pb/xglFXM0ouxvtSmw6pQqema0Es/50VzdbLR/X1Cy3CeOSdWYA7uRqLaAAfwKWIui7SbmrneIQIvxbJXZwG7ALEkHUlJfHgDu7IwWPgw8Nc7PTwmSbgdWBr4AfBD4vO2966papGixvYeom6TOGmQfv4DY3kvSLpTy7zETOMP2k5I+L2mm7Vlj/Ipk4WixbrbYvy9qtFjuo5lUjTmwG0mLeakvoqxhA3hxTSHPgBbj2So/oSxOn0V5ersksAawA8Vp9GTbLeSQ70SZqdsS+AawvKQdgCta3ecqGC229yh1M3VOPdnHLyCdffyawJ3dqaUpxiQA2D6whq5FmBbrZov9+6JGi+U+mknVmAO7kTQ30rd9Z9/bO8f8xjZpLp5jUF1n5974nUHXJC1OSXmsju1fAL8AjpS0JPB6is34kZQnkVGoXuaDaLG9B6qbqXPqabIdjaIVjWsAT3cbkq8JnEx5SDZD0gxKKu7DVRUuGK3Ec340p7PF/n0haC6eYxBB56RqbMl9a9KRtMIY5zfsDg+eQjnjImm1Mc7/41RrGYtg8dyxt4eZpN0lbdt3eddKsuahu8GP5knKk/0m6MXSds8G+zzgpZVljUDSa+bzLc2UOYRp783XTUidE0mUPj5I//4UsLWk44DPUFwmTwdO615b2pi++XhGqZsQpn8Pcc+U9IL5fEv1cq9dN4dqYEfpQAGQ1N+JfgLmzEZURdLbu8OTuvcHSXqXpDdJWpWGOn8CxBNA0smUp+C9tJdHgG0lnQJg+w+1tA3gMihuk5LO6Tv/vkp6RjBWLClPn1vi0+NdbKXMg7X3putmH6lz4mi+j4/Qv0v6B8qa5K9TtrtYzvYvbW9je3vb29nepq7KQoR4dkSom5H69xD3TObzWaOFcqdy3Ry2VMz+6c+BI+oG2K3rWHuOaO8EjqJ0rkcC76klbAAR4gmwmu239d7YPgs4S9KVFTWNoFt/MQt4VGULgWmUFJ3ecSt542PF8qqKmgaxrsoeYf0IsO0tawgag+bbe5S6mTonhQh9fPP9O/An4GvAC4A3AhdK2p2yWflfKOsuj24kFTNCPCFG3Wy+f+8jyj1zLUknDLpge7+pFjMGVevmsA3sniPpXyg3z2X6jp9TV9YIfkrZnb53c78XuIDy9Gx92z+pJWwAEeIJ8J9d53ou5Qa7FLAF5clpK5wJPAasA3yP0jGs23fcyoe9sWJ5V1VV83IrZfP01onQ3qPUzdQ58UTo45vv320/Lek+YG3gRIoT6uW2N4CS7ghcIWl927PH+VVTQfPx7IhQNyP07z2i3DP/AHyztoj5ULVuDtUG5V1nNZD+J1Q1kXQw8BaKY9LPutNXATsC1wMHdvsKVSdCPGHOBru7UEw+/gfwMHANcILtQfsKTTmSlqZ80DvE9laSBFxge6vu+nm2tx33l0wBEWIJIOn/2j6kto75EaG9B6qbqXOCidDHB+qTngssb/s33futbV/Qd31l2/eM+QumiEDxjFA3m+/fewS6Z37FdtMD0Np1c9gGdq+xfX1tHeMhaW/gdspNf0tJlwDbUJ7k7g08z/ZhNTX2iBDP8ZC0o+3v19YBIGkl4N3AP1Ge7HwWWKlzUJsGXGh7i5oaIyFpZ9tn1NYxPyK09yh1M3VOPBH6eEnPBvYAHgVOtd30HoCSPmH70No6FpaW7pcQpm4237/3UHG53o2STdB0O5K0HGUd6HMps8o/sv2XuqrmUrtuDpt5yriLQxvhr5R9jWb2nTsLOMf2CcCmklpxTYsQz/H499oCeti+FziO0kmdC9xiu7dY/WngvRXlRWTOnlCSPlpTyHxovr1HqZupc1KI0MefCjyPks56XGUtYyLpWkkXAwdJuqjv62JJl0g6oLbG+dDM/bIjQt1svn/v41uU9WCtt6PtgNuAg4A3AP8HuFXSJjV1jaJq3Ry2Gbs/URYpjzhNQ4tDJW0PvAlYEfgB8DjwAGXPk18C6wE/beFpSoR4joekH9t+dQM6lgJOoOThL00p736mAYvZ3m2qtUVF0mW2N+2OL7X9+tqaBtF6e49SN1Pn5BChj5d0pe2NuuMrbG9cW9N4SLrB9vqSVgZWtH2jytYX17ZwPxqLVu6XPYLUzab7936itCNJ1wO72P5t37lVgW/a3nDMH5xCatfNYTNPibA49CfA4hTXtMUoT3vWAHYANgBOtn1DPXkjiBBPJG0w6DRlUXgLPAocQun0DwDuoyy6vqO7LkqdaBZJ+9v+Ym0dffQvXn5ufx2wfW09WfPQenuPUjdT5+QQoY9fqmvr6o6bbOuSVrB9P6UOQHFFPBO40fZsSU1sTB/gftkjQt1svX/vJ0Q7Ap4GntDIPQBnA9Mr6RlE1bo5bDN2IRaHjoWkxYHX2r6ithaIE8/aC1kXhu7mvhbwhO1Ta+tZUCRtavuy2jp6jFPmtr3PlIp5hjTY3kPUzdQ5cUTo46O0dUlnUz7c/54yY9uzRDcNzdRGuV9GqJvj0WD/HqUdXcZcl9H+bQXcSmZO7bo5VAO7SEia4VG2x5172ua2L64kK5lCJL3D9ldqzY+RFAAAFwdJREFU6xiNpDWBx2z/TsWme2lKGsRfK0sLS7T23mrdHE2LOiWtztx9rQbxR9uPTZWeZOronDH3BvYFjgAup3w4FbC4O8fMZNEiWv/eMp3Jy+6Ume/TRsc1yYFds0i6yvaGKpvWnmn7jV1HcL7trWvrSyYWSZsxcv8qAe+nLGJ+gvI094JBPzuVSPocsCZlP5a7KOncD1PWimxTU1tkWm7vgepmFJ1fo6RiznOJMqOzqe1Vp1ZVMtl05igbAd+nrK/6KLA6xTxnz5raksml5f49GpLOomwVsRywhO3WTYemnGFbY9c83eL6WcCjXScwDZjRd5wj8UWTV1JyxBejPM038BCwK3ALxVWr+odSYF3bm0iaTnGmWt32U5J+VFtYRIK09yh1M4RO23tJ2oWyLqTHTOAM209K+rykmbZnVZKYTA5LAZ+j7GF4GHCS7R9IOlbS8rYfrCsvmWiC9O/RWNb24VBMXmqLaZEc2NGc8cOZlH1E1gG+R3mKu27fcfMdQWPxHJOWdNo+RtIWlAW3ewNfB06mDJyOrSpuJDNV9uEScC+wQvfksYlNVudHS2Xe0Xx7j1I3o+jsPuytSXHGg5LK/LfeddsHDvq5lmiwHc1Doxo/w9yyPkjSgZR2frqkaa2sERpEo/Gch8Z0Nt+/z4/G4glxTF7mYapimQO7wn/WFtDHzpRO4BDb23cfmi+wvT2ApPOqqlswWorneDSjs1tIvRvwNuCrwNcojlo7V5Q1iCeBb3bHT1D2vukdR6CZMu9ovr1HqZtRdFJc8Z522ZB8Tcrgc2vKk/wZwAzbD1dVOH9aa0eDaE3j0baPHOtilwXRMq3Fcyxa0tl8/74AtBRPgF8A+3XHv2Su+6SBpgd2TFEsh25gN5bxQ2VZ/SxF2XRxtqTzgc/SfXiWNI2RG11WJ0A8gRA6pwM3UQZIZwDnUxbYt9ZGtwA2pzj5XQZz6uX/qqpqAAHKHGK09yh1M4rOp4CtJa0AvBh4F3A6JWVLFL3NrFeN0I4iaHTZfH4gklakOKRePmWCxiFCPCGEzgj9+xwCxLMpZ9bxqBnLoTJPiWL80KW6HUVZIPoD27/ru/YK2zdVE9dHoHg2r7Pr5LenPM3fjJKq8UfbZ/auj/fBYKqQdDollWgpyh5cvwHeDlxi++Ca2vqJUOY9Wm/vgepm8zol/QPFzOUKSt3c0fagfcOaIEI7iqARQNKuwNW275Z0G3AlxU34EknHUzaqru7gGiieUXQ23b/3iBLPCNSOZWtPMiebpo0furUXJ1CmlJcG1gPWK7P3QLfXDSXdqAWajmcfEXReQHHKE/AayszYLyS9rTs3k5KuVZtVbG/QpZTcAXwR2ND2nyvrGk3zZR6ovUepmxF0/omSIvoC4I3Ahd3T3AOAv1BSR49uKBWz+XZEDI0AxwBXSnoeZX3lh4H3SPoCcGULg7qOKPFsWmeg/r1H0/EMRtVYDtvArnXjh0eBQygfTg6gzIj8lPIBGrq9bupIG0jr8ewRQedOFMe0G4FnUWzaPw78GDjC7UytP6tbuDyN8iH1amBtSa0tXI5Q5lHae5S62bxO209Lug9YGzgROBW4vDdr1w3yrpC0fiP7M0VoRxE0AtzhbgNySc8CNgY2oKTmbS5pmUYG9FHi2brOKP17j9bjOS5qy+SlaiyHLRWz+R3re0h6LSXn/gnbp9bWM4go8Yygs0vRWs329ZJ2tX1ad35f4NvAbDewabGkkxkZS/debe9TTdgoIpR5Py2390B1M4rO5wLLu9uMWtLW7ttfT9LKtu+pJrCPCO0ogkYASXcC/4+y/9Z2lAdjB9u+RtK2lM2q31tTI4SKZwid0Hb/3iNSPAchadPeuv/a1I7lsA3sZjCG8YPt71QVNw6S3tFQmsYcosSzdZ2dlottbybpYGCZ7tJdlKe5Z1DSsy6vJHEOXWrBm4H1KTofpqwd+E7t9Uv9tF7m49FSe49SN6Po7EfSJ2wfWlvHeERoR0E0zgTOpaRfzgCWBV4EbAisRJldvt/2XdVEdkSIJ8TROZqW+vd+IsVTYxiT2P5rZWlA/VgOWyrmN+mMHyTtRJ/xA9BExZW0GSP3NhGws6S7KW5vi/U/3a1M8/HsaFpnl571VPf2zcCFwF+Bt1A2MT6xoQ+kJ1LS3K6mpJosSbF03gpoZsaOxsu8R+vtPUrdjKITQNK1lLr5qi6tec4lSorzGba/UEXcvERoR81rtD1L0gWUPrL/AdifKJbthwMnUdxRa9N8PDua19l6/z6K5uMJI41JJPUbk+xAO27CVWM5bAO7CMYPr6TYdi9G2TPMwEPArsAtFAOAVjqCCPGEODqhdPY/Ax6kfAgQsLSk19q+rqqywmq2Nxp17vOSrq6iZmyilHmk9t563ezRtM6+9XQ32N5S0soUt7Qbuye91wKtDOwitKMIGqEY97ydkSnspwIfoawN3aSaspFEiWcEnZH69wjxhBgmL1VjOWwDu+aNH2wfI2kLyqaLewNfp2xgu7rtY6uKm5fm49kRQecSkq6j2OP2mEaZHZsOfANYvYawUTwg6QiKVXdv24NNgPtrihpAhDKP0t6j1M0QOiWtYPt+yow3wJHAmcCNtmd363FaIUI7iqARykDu46Pev4iyt9lpDc3cRIln8zqD9O89mo9nRwSTl6qxHLY1ds0bP0haHPgScCAlNeOblDVMh9vet6a20USIJ8TQKemi7un9VcAplKd676Lsf/N7YBnb1Z9ISVoSOIhiJ780c9fY/YftR8f72akkQplDjPYeqG5G0Xk25Qn+75lbL+mOp1HSs5qwQI/QjiJohDnmPtMoG9T3MxN4xPYjU69qXgLFs3mdEfr3HhHiCfWNSRaE2rEcthm7tzOG8UNNUaOYDtxESSc6Azgf2Jc2yypCPCGOToDrgFdTOoGLKbnZXwX2r6ipn72AL9s+ov+kpP0p6QatEKXMI7X31utmj6Z12t5OxRlzb0pZHwFcTtHbmgV6hHYUQSO2HxjvuqQX2v7tFMkZjxDxJIbOSP17hHhC2Z90oDFJVVUjqRrLYZyxG238sCHwt1aeSHQVdHtgDWAz4HvAH22f2bveivtghHhCDJ2Sbqass+g9gZpFWSN0M0Xzy21fWEneHCT9lrIfzzeAL/bqoqRLW3laBjHKHGK090B1M4rOA4CNgO9TjDM+SkkRvcX2njW1jSZCO4qgsR9J+9k+YdS56cCltjeuJKtfS4h4RtAZoX/vESGeAJJOZ+4ykPvoMyaxfXBNbT1qx3LYBnZXDjB+QNLVtl9XQ9NoJF1E2dBSlIqwDPALim23gJm2t66ncC4R4gkxdErah5EpOjOAFYF1KDeFb9k+qoa2fro0iC2B91A2hD7U9kUNDuyaL3OI0d4D1c0oOj9IWaO6DsVQ4yTbP5B0LPBJ2w9WFdhHhHYUQWM/kq6yvWE3mDvb9rbd+Yttb1FZXph4RtAZoX/vESGeAJKuHWBMckJLJi+1Y9nidPBkEsH4YSfKU+cbKSP+91MWXP8YOMJtjcQjxBMC6LR90ljXunVt83QStbA9CzhK0inA4ZIOBFaoLGs0zZd5R/PtPUrdjKKz4zOUeglwUNeGBJzePcVv5SFJhHYUQWM/swFcnPyW6Dtfva13RIlnBJ3N9+99RIgnxDB5qRrLYZuxa974oVtgvZrt6yXtavu07vy+wLeB2bYfqyqyI0I8IY7OCEja1vZ5o869Cnin7f0qyZqHKGUeqb0nE8P80q8kTbc92mCjChHaUQSNMGdGeTbwIcq6SgEf7Dve3faW9RQWAsWzeZ2R+vcI8YT6xiQLQu1YDtvA7l8ptsIPjTq/v+3qxg9dPvbFtjeTdDBl2h7KtP23KItvj3Y7G+02Hc8eUXRGQ9JHbX+qto5BRCjzaO09mXwkrQis1UqZB2lHzWsEkPR+yrrPA4H/oHwY7T9+QyMDuyjxbFpntP699Xj26FKYBxqTNLResWosp032H2iMDwLnSzqwa3Q93lRLUD9dpew9qX0zpbN/BHhL9/7EVjqBjqbj2UcUndFoJV1sEM2XecD2nkwAknaV9Pzu+DZJJ0narLt8KPCSeurmofl2RAyN2D7GZe+yu20f1x3f1XfcCiHiSeM6A/bvTcezjxMphjS/Aa4Bbgd27s63QtVYDtvA7g7KAtZnA9dIqv50bByeAH5GeRLxj5ROYWm1tXltlHhG0ZlMHNHKPEJ7TyaGYyhrVC8G7gQ+DGwh6RZguu2vVFU3kgjtKIJGJO0o6XDKepvejM6z6qoaSIh4EkcnxOjfo8RzNdtvsf0F2yfb/rztXSgGWa1QNZbDNrDD9qzOGW1HYBdJP6At44clJF1HcXPr0bsBLEmxmW+GAPEE4ugMhub/LfUIUuah2nsyIdxhe7fOAfENwLrABpT0rLUkLTPuT08xEdpRBI2U2YVfAvdKOhdYD3gdzBnkLVZR2wiCxDOCzlD9e4B4QmdMImlbSRtLeoOko2nM5KVmLIfNFfPo3oHtPwD79owf6kmah8c6K+SrKJVgJnAP5QnA74Gf1xQ3igjxhDg6QyDpVbZvBP5L0p6Um9TXbT9eWVo/Uco8UntPJoZVJX0MWA7YjuLsdrDtayT9hOKa996K+vqJ0I4iaAR4qDPPOE3SepQP9jMlfcz2RyS9r7K+HlHiGUFnpP49QjwB9qQYk7yDkcYkh9YUNYqqsRwq85R+WjV+kHSR7S27JxDPocyK/BfwXeCrwP62f1VR4kBajedoouhsFUlfAx63vZ/KvlvPA34FrG97p7rqBtNymUdt78kzQ9JM4FxK+uUMYFngRZS0nZUoduj3276rmsgxaLkd9WhVo6QZwPm2t5D0QuZmS02jtPO9KAO/hwb+gkq0Gs/RtKozav/eajyhvjHJwlIjlkOXitlHq8YPz5e0H3AbZe+THwG3AtMpi25XrqhtPFqN52ii6GyVVbpB3eqUfVl2t3045abVKi2XedT2njwDXPaAvADYB9iDkoq5NmXW7kLgcEpaZou03I56NKnR9myKIybA94FPUFIzDwVeDHyye98aTcZzAK3qjNq/txpPiGPy0mPKYznMA7tWOYay0Pbx7kvAy4HDKE9616knLUl4qLPtPgX4FLCkpL0qa4pMtvfhY2vgSErZH929rgccD+wA/KWetGQKeMj2nsAt3euvbe8BHFdZVzLxZP8+8UQxeanGsK2x66dJ4wfbJ411TWXTw42mUM7C0GQ8BxBFZ6vsQclx/7Ttc7qZu7WB3evKGpdmyzxwe0+eOaKso+t//yLgs5QUowtqiFoAmm1HfbSscdVu9malUa8GsP2lquoG03I8+2lSZ+D+vcl49ugyH46SdApwuKQDac/kpceUx3LoBnZBjB8GYvtvwPm1dfQTJZ5RdLaO7UeBL/e9vw34UD1FYxO9zFts78mE8BZKtsxTfefeTzFWeKSKonGI0I4iaASepszeeNRrcwSJZxidg2ixfw8SzxAmLzVjOVSpmJ3xQ6/wHwO2oZg/nFpNVGCixDOKzmTiyDJPWsX2A7bvt/3gqK/7bD/SmWs0QYR2FEFjx922TwHuHfXaFFHiGUVnFKLE0/Z5vWNJH+3O3Wh7v3qqRlI7lsM2Y7eK7U37jB/WtW1Jl1bWFZUo8YyiM5k4ssyTppG0n+0TRp2bTlm/unEdVfMQoR1F0NjPcpJOAl7ava7dvWJ7n7rSgDjxjKIzChHj+XrKWv/WqBrLYRvY9YwfdmKu8cPOlTVFJko8o+hMJo4s86R19gRO6AZzZ9ve1vZTkp6sLayPCO2oeY2SFgOW6N7uRknLPJKSNbVWd7xUHXXz0Hw8O6LojELGc+KoGsuhSsWkGD/8lWL88B1gRdo3fmiZKPGMojOZOLLMk9aZDWD7KeZ+6IfOTKMRIrSj5jXafpKSjoXtm23fYvtW4HbgPNu3dutxWqD5eHZE0RmFiPFs1eSlaiyHdoPyJEmSJJlqJO1DGdR9CDiC8uHkg33Hu9tOC+8kSZIB9IxJJJ0AXEWbJi/VGLYZuyRJkiSpyXLAshQXzOd2X/3HSZIkyQBqG5NEIGfskiRJkmSKkXSZ7U2740ttv747vihn7JIkSeal1292xiTfo8+YpNeHDjvDZp6SJEmSJNWQtCPwajqzDEnTKKlESZIkyfikyct8yFTMJEmSJJk6rgF+Cdwr6VxgPeB1MGeQt1hFbUmSJC0T0eRlSslUzCRJkiSZIiTNsD27O14PWBL4MfAx2x/pGQNUFZkkSZKEJGfskiRJkmQKkDQDOL87fiHwZ+AeYBVgY0kvpljgJ0mSJMlCk2vskiRJkmQKsD1b0qzu7feBm4DNgR8CLwY+SUnNXLuOwiRJkiQyOWOXJEmSJFPPQ7b3BG7pXn9tew/guMq6kiRJkqDkwC5JkiRJpo5VJe0HrDTq1QC2v1RVXZIkSRKWHNglSZIkydTxNPAEZSDX/5okSZIkfxc5sEuSJEmSqeNu26cA9456TZIkSZK/ixzYJUmSJMnUs5ykk4CXdq9rSzqpO06SJEmShSZdMZMkSZJkCpC0GLBE93Y3SlrmkZSHrGt1x0vVUZckSZJEJwd2SZIkSTIF2H5S0jbd8c2985IWB86zfWs1cUmSJEl4ZLu2hiRJkiRJkiRJkuTvINfYJUmSJEmSJEmSBCcHdkmSJEmykEhaXtIC30MlLSNJk6kpSZIkGW5yYJckSZIs8ki6UNKzJU1T4SJJ0yVN765L0lmSnt+ZnPT/7Ize9/XxDeBVY/ytxSStJWkXSadLWgU4HNh6Mv63JEmSJIE0T0mSJEkWYSStTnGgnGX70c685N+AVwAXAtMlbQX8O/AzimvlZZJmAf8M/ASYDhwFnN39zt2BVYBPd5NwM4GXAi+3fT+wArAnsC3wv4G7gQ2B30pas5P2Xdt3T/K/nyRJkgwRObBLkiRJFmX+CdgceL6k44F32z5f0jm23wggaQdgbeB44Gnb/7M7/3Pbm/T/MknbAfsAXwa+ZftBSccCR3WDOoDfAx8D1gFuB9YFbgGu7q5/BchNyZMkSZIJJVMxkyRJkkWZDYB3ATfb/lfgMEmXAs+WdJukG4A1gP2BzwGW9C/9v6BL2VS3Ru5lwM7ATcC5kr4E/Mb2uX0/sg1wbfd6A3AocAKwKfAUcKXthybvX06SJEmGkZyxS5IkSRZljgQeBJD0ZuAQ20907z8OnAv8FDgVuMr27ZLOoMyyIemHlHvlQbZvAo7ozj8EPA5cavvb/X/Q9rndurq1gAOAnwPLU9IxDXxgMv/hJEmSZDjJfeySJEmSRRZJLwP2paRPHgosDryBMsB6IWXQdwJl0PVn2wdKus72a7tUzHX7fteywJbA3pRZvt/2/allgStsv7f73nO7v/UAcD5lvd6DlHV87wY2d96AkyRJkgkkZ+ySJEmSRZlpwFnAGraP7RwvZfvIbsbuHEpa5Y3AW+fzu5YFFgO+BKxn++O9C5I2oXO9lLQL8GNgfYpxy1nAB4E3A/cAtwI7AWdMxD+YJEmSJJADuyRJkmQRpkufRNK/de+flLSipCX7vueJbv2cRm910P3sdGCa7duB2yW9Dtire+2xLHBxd3wjZTD3XYrL5l22b+7+hinpoa+Y6P81SZIkGW7SPCVJkiQZBmZKWhzA9nuAPSgzbL0tBxYHlqZsgfBIt7buge71YuD9fb9rceBrtjfvfQHv685j+zbbjwPPsf032/tL2hvYAfid7TttnzPp/3GSJEkyVOQauyRJkmTokKRnusZN0jTKDN7shfiZGQvz/UmSJEmysOTALkmSJEmSJEmSJDiZipkkSZIkSZIkSRKcHNglSZIkSZIkSZIEJwd2SZIkSZIkSZIkwcmBXZIkSZIkSZIkSXByYJckSZIkSZIkSRKc/waSgnoVK/QORwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1080x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(15, 8))\n",
    "#sns.bar(feature_important.index, feature_important.data)\n",
    "plt.title(\"AdaBoost回归\")\n",
    "sns.barplot(x='特征名称',y='重要指数',color=\"salmon\",data=feature_important_df[:20])\n",
    "plt.xticks(rotation=90)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [],
   "source": [
    "feature_important_df.to_excel(\"AdaBoost回归模型重要参数选择指数.xlsx\", index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# from sklearn.feature_selection import SelectFromModel\n",
    "# from sklearn.ensemble import RandomForestRegressor # 同样以此模型举例\n",
    "# rf = RandomForestRegressor() # 默认参数\n",
    "# rf.fit(X, y)\n",
    "# model = SelectFromModel(rf)\n",
    "# X_new = model.transform(X)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
